我是一个初学者在flutter,我想使用SQlite数据库使用sqflite包在我的Flutter应用程序,我运行我的flutter应用程序在 chrome ,因为我有模拟器不工作,我使用getApplicationDocumentsDirectory
在代码中,我有一个错误说:Error: MissingPluginException(No implementation found for method getApplicationDocumentsDirectory on channel plugins.flutter.io/path_provider)
我在一篇文章中读到:我在开始为一个应用程序添加Web支持后遇到了这个问题。getApplicationDocumentsDirectory函数只支持iOS和Android(docs)。我添加了一个Web检查,并更改了设置目录的方式,为我修复了"找不到方法的实现"。
使用Flutter的kIsWeb来判断平台是否为Web:
Then handle setting the directory accordingly:
if (kIsWeb) {
// Set web-specific directory
} else {
appDocumentDirectory = await path_provider.getApplicationDocumentsDirectory();
}
但是我不知道如何设置网络专用目录。
我的密码是
if (_database != null) {
return _database;
}
_database = await _initializeDatabase();
return _database;
}
Future<Database> _initializeDatabase() async {
Directory directory = await getApplicationDocumentsDirectory();
String path = join(directory.path, 'annonce_database.db');
return await openDatabase(path, version: _dbVersion, onCreate: _onCreate);
}```
1条答案
按热度按时间tp5buhyn1#
getApplicationDocumentsDirectory()在Web上不起作用,因此使用您的代码时,您必须修改th _initializeDatabase()函数,并替换为字符串路径路由,以便在Web(即项目内的assets文件夹)中使用它。不要忘记导入KIsWeb