You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何解决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

火山引擎 最新活动