У меня проблема с подключением, он не подключается к файлу, а инициализирует пустой новый файл с тем же именем в каталоге Android (Android/data/com.exemple.android_studio_project). В Enternet я видел только вариант ленивой инициализации. Было несколько способов найти файл, но они по какой-то причине не работали.
Я пытался спросить ИИ, но ответ меня не удовлетворил.
* *Истинное расположение базы данных:
D:\android_studio_project\lib\souece.db **
часть кода sqLite_connect.dart:
Код: Выделить всё
import 'dart:typed_data';
import 'package:flutter/services.dart';
import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
import 'dart:io';
class SqliteConnect {
static final SqliteConnect instance = SqliteConnect._init();
SqliteConnect._init();
Database? _database;
Future get database async {
if (_database != null) return _database!;
_database = await _initDB('source.db');
return _database!;
}
Future _initDB(String filePath) async {
Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, filePath);
bool dbExists = await _checkDbExists(path);
if (!dbExists) {
await _copyDbFromAssets(path);
}
return await openDatabase(path);
}
Future _checkDbExists(String path) async {
try {
return await File(path).exists();
} catch (e) {
return false;
}
}
Future _copyDbFromAssets(String path) async {
ByteData data = await rootBundle.load('android_studio_project/assets/source.db');
List bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
await File(path).writeAsBytes(bytes, flush: true);
}
}
Если есть технология хранения данных в sqlite в приложении Flutter, то я этого не делаю знайте, буду рад совету.
Подробнее здесь: https://stackoverflow.com/questions/790 ... or-android
Мобильная версия