Проблема с подключением Flutter SQLite (для Android)Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Проблема с подключением Flutter SQLite (для Android)

Сообщение Anonymous »

Делаем приложение для Android. (новинка на Flutter). Пытаюсь подключиться к уже существующему файлу SQLite к проекту.
У меня проблема с подключением, он не подключается к файлу, а инициализирует пустой новый файл с тем же именем в каталоге 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»