如何解决sqflite的MissingPluginException错误?附数据库创建代码及报错详情
解决sqflite的MissingPluginException问题
这个MissingPluginException是Flutter开发中使用原生插件时很常见的问题,本质是sqflite的原生实现部分没有被正确链接到你的应用里。不用慌,按照下面的步骤操作就能解决:
第一步:停止当前运行的应用
不管你是在模拟器还是真机上运行,先把当前的应用进程彻底关掉(可以在终端按Ctrl+C停止运行,或者在设备上划掉应用)。第二步:清理Flutter项目缓存
在项目根目录的终端里执行:flutter clean这一步会清除项目里的构建缓存,避免旧的、未正确链接的插件残留。
第三步:重新获取依赖
接着执行:flutter pub get让Flutter重新下载并链接sqflite插件的所有依赖文件。
第四步:重新运行应用
最后执行:flutter run重新启动应用,这时候sqflite的原生实现应该就能被正确加载了。
额外注意事项(针对iOS平台)
如果你是在iOS设备/模拟器上运行,执行完上面的步骤后还是有问题,可以进入项目的ios目录,执行:
pod install
然后再回到根目录重新运行应用。
另外,顺便提个小优化:你的CreateDatabase函数里用了.then()链式调用,其实可以换成更简洁的async/await写法,代码可读性会更好,比如:
void CreateDatabase() async { database = await openDatabase( 'todo.db', version: 1, onCreate: (database, version) async { print('database is created '); try { await database.execute( 'CREATE TABLE tasks(id INTEGER PRIMARY KEY , title TEXT, date TEXT , time TEXT , Status Text )'); print('table created'); } catch (error) { print('error when creating table ${error.runtimeType}'); } }, onOpen: (database) { print('database is opned '); }, ); }
内容的提问来源于stack exchange,提问作者ingmbk




