运行集成sqflite的Flutter应用报MissingPluginException异常如何解决
sqflite MissingPluginException 异常原因及解决方法
异常根本原因
你遇到的MissingPluginException(No implementation found for method getDatabasesPath on channel com.tekartik.sqflite)错误,本质是Flutter侧调用sqflite声明的平台通道方法时,没有找到对应原生侧的方法实现,绝大多数场景都是sqflite插件没有被正确编译到项目的原生构建产物中导致的。
排查解决步骤
- 检查pubspec依赖配置
确认pubspec.yaml中已正确添加sqflite依赖,没有拼写错误,依赖添加后已执行flutter pub get命令完成依赖拉取,不要手动修改pubspec.lock中sqflite相关的配置项。 - 清理构建缓存重新运行
如果是项目运行过程中新增的sqflite依赖,直接使用热重载/热更新不会触发原生代码构建,插件不会被打包到应用中。直接停止当前运行的应用,执行flutter clean命令清理本地构建缓存,再重新运行项目即可。 - 检查Android端最小SDK配置
针对Android平台运行的场景,确认android/app/build.gradle中的minSdkVersion配置不低于16,sqflite最低要求Android SDK 16,低于该版本会导致插件不会被编译进APK,修改配置后重新构建即可。 - 混合开发项目适配
如果是Flutter作为模块嵌入原生Android/iOS项目的场景,确认原生侧已完成Flutter模块插件的依赖同步,没有手动排除sqflite的原生依赖包,同步完成后重新构建原生项目。 - 多平台适配检查
sqflite默认仅支持Android、iOS、macOS三个平台,如果你在Windows、Linux、Web平台运行,需要额外集成sqflite_common_ffi等平台适配包,否则会触发无方法实现的错误。
内容的提问来源于stack exchange,提问作者Roslan Amir
相关产品推荐
相关产品推荐

