Flutter创建sqflite数据库时提示Binding未初始化错误排查
问题根因
Binding has not yet been initialized报错由代码书写错误直接导致:main()方法中写的WidgetsFlutterBinding.ensureInitialized;仅引用了方法对象,未添加括号触发方法调用,Flutter框架服务绑定没有完成初始化。后续执行getDatabasesPath()这类需要和原生平台做通道通信的操作时,就会抛出该错误。
修复方案
给ensureInitialized补上调用括号即可,修正后的main()方法代码如下:
void main() async { WidgetsFlutterBinding.ensureInitialized(); await DBHelper().initDb(); runApp(const MyApp()); }
补充说明
WidgetsFlutterBinding.ensureInitialized()是普通方法,不是类属性,必须带括号调用才会执行初始化逻辑- 该方法为幂等设计,多次调用不会产生副作用,只需在执行原生交互类异步逻辑、调用
runApp()前执行一次即可 - 断点停在
getDatabasesPath()属于正常现象:sqflite获取数据库存储路径的操作需要通过平台通道和原生层通信,必须依赖已完成初始化的框架绑定才能正常执行。
内容的提问来源于stack exchange,提问作者Abdullah Bahattab
相关产品推荐
相关产品推荐

