如何在 Flutter 中初始化已下载并本地保存在设备中的 sqlite 数据库?

问题描述

在我的 Flutter 项目中,我从服务器下载了一个 zip,将其保存在我设备的本地存储中,然后解压缩。所以,文件保存和提取部分是可以的,因为我可以在以下路径中看到我从设备资源管理器下载的文件-

/data/user/0/com.asif.myproject/app_Flutter/sample.db

但是现在的问题是,当我在 dart 中初始化 sqlite 数据库时,它显示了一些异常。代码如下:

class DatabaseHelper {
  static final DatabaseHelper _instance = new DatabaseHelper.internal();
  factory DatabaseHelper() => _instance;

  static Database _db;

  Future<Database> get db async {
    if (_db != null) {
      return _db;
    }
    _db = await initDb();
    return _db;
  }

  DatabaseHelper.internal();

  initDb() async {
    Directory documentDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentDirectory.path,"sample.db");

    ByteData data = await rootBundle.load(join(documentDirectory.path,'sample.db'));
    List<int> bytes = data.buffer.asUint8List(data.offsetInBytes,data.lengthInBytes);

    await new File(path).writeAsBytes(bytes);

    var ourDb = await openDatabase(path);
    return ourDb;
  }
}

因此,对于此代码,当我尝试初始化我的 sqlite 数据库时,它显示了以下异常-

**

[错误Flutter/lib/ui/ui_dart_state.cc(186)] 未处理的异常: 无法加载资产: /data/user/0/com.asif.myproject/app_Flutter/sample.db

**

注意:我在 ma​​nifest 文件添加了读写权限,如下所示:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

因此,我需要一个解决方案来从上述路径初始化 sqlite 数据库,以便我可以执行有关该数据库的所有必要查询

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)