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

如何初始化在颤振中下载并本地保存在设备中的sqlite数据库?,sqlite,flutter,dart,read-write,Sqlite,Flutter,Dart,Read Write,在我的flatter项目中,我从服务器下载了一个zip文件,将其保存在设备的本地存储中,然后解压缩。因此,文件保存和提取部分是正常的,因为我可以在下面的路径中看到我从设备资源管理器下载的文件- /data/user/0/com.asif.myproject/app\u flatter/sample.db 但现在的问题是,当我在dart中初始化sqlite数据库时,它显示了一些异常。下面给出了代码: class DatabaseHelper { static final DatabaseHel

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

/data/user/0/com.asif.myproject/app\u flatter/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;
  }
}
类数据库助手{
静态最终DatabaseHelper _实例=新DatabaseHelper.internal();
factory DatabaseHelper()=>\u实例;
静态数据库;
未来获取数据库异步{
如果(_db!=null){
返回_db;
}
_db=等待initDb();
返回_db;
}
DatabaseHelper.internal();
initDb()异步{
Directory documentDirectory=等待getApplicationDocumentsDirectory();
stringpath=join(documentDirectory.path,“sample.db”);
ByteData=wait rootBundle.load(join(documentDirectory.path,'sample.db');
List bytes=data.buffer.asUint8List(data.offsetInBytes,data.lengthInBytes);
等待新文件(路径)。writeAsBytes(字节);
var ourDb=等待openDatabase(路径);
返回我们的数据库;
}
}
因此,对于这段代码,当我尝试初始化sqlite数据库时,它向我显示了以下异常-

**

[错误:flatter/lib/ui/ui\u dart\u state.cc(186)]未处理的异常: 无法加载资源: /data/user/0/com.asif.myproject/app_flatter/sample.db

**

注意:我在清单文件中添加了读写权限,如下所示:



因此,我需要一个解决方案从上面提到的路径初始化sqlite数据库,这样我就可以执行有关该数据库的所有必要查询。

您是否向用户请求了存储权限?尽管我允许了存储权限,但它不起作用。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>