Flutter开发报错:LateInitializationError未初始化_deviceCalendarPlugin
问题解决:LateInitializationError 修复方案
错误原因
你的代码里State类的构造函数名称写错了:当前State类是_DoctorCalendarsPageState,但你定义的构造函数是_CalendarsPageState(),这个构造函数根本不会被调用,导致late DeviceCalendarPlugin _deviceCalendarPlugin始终未初始化,触发LateInitializationError。
修复步骤
方案1:修正构造函数名称
把构造函数名改成和State类一致的_DoctorCalendarsPageState():
_DoctorCalendarsPageState() { _deviceCalendarPlugin = DeviceCalendarPlugin(); }
方案2:在initState中初始化(更推荐)
Flutter官方更推荐在initState方法里初始化变量,避免生命周期相关问题,把初始化代码移到initState中:
@override void initState() { super.initState(); _deviceCalendarPlugin = DeviceCalendarPlugin(); // 在这里初始化实例 _retrieveCalendars(); }
同时删除原来的错误构造函数。
为什么加?标记不行?
DeviceCalendarPlugin类的设计不允许为null,给变量加?变成DeviceCalendarPlugin? _deviceCalendarPlugin后,后续调用_deviceCalendarPlugin.hasPermissions()等方法时,会因为变量可能为null而报错,而且该插件实例必须是初始化后的非空对象才能正常使用。
验证修复
完成修复后,_deviceCalendarPlugin会在State初始化阶段被正确实例化,调用_retrieveCalendars方法时就不会触发未初始化错误了。
内容的提问来源于stack exchange,提问作者bino arin
相关产品推荐
相关产品推荐

