Flutter运行报错LateInitializationError: filterValue未初始化如何解决?
错误原因
你用late关键字修饰了filterValue变量,该关键字要求你必须在变量被访问前完成赋值,但实际运行逻辑中:
- 页面首次加载执行
build方法时,会直接在Consumer组件的builder回调里调用filterValue - 此时你从未给
filterValue赋过值,也没有触发过筛选菜单的选择操作,因此触发未初始化报错。
解决方法
给filterValue设置默认初始值即可,通常默认展示全部待办符合交互逻辑,直接修改变量声明代码:
// 把原来的 late String filterValue; 替换成下面的代码 String filterValue = 'All';
如果需要更规范的初始化方式,也可以在initState生命周期中赋值:
@override void initState() { super.initState(); filterValue = filteredAlternatives.first; }
修改后首次页面加载时filterValue已经有有效值,后续点击筛选菜单选择选项后,setState会触发页面重绘,筛选逻辑也会正常生效。
内容的提问来源于stack exchange,提问作者mahognygoat
相关产品推荐
相关产品推荐

