如何初始化在颤振中下载并本地保存在设备中的sqlite数据库?
在我的flatter项目中,我从服务器下载了一个zip文件,将其保存在设备的本地存储中,然后解压缩。因此,文件保存和提取部分是正常的,因为我可以在下面的路径中看到我从设备资源管理器下载的文件- /data/user/0/com.asif.myproject/app\u flatter/sample.db 但现在的问题是,当我在dart中初始化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
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"/>