Flutter真机测试报LateInitializationError: selectedGender未初始化求助
Flutter
LateInitializationError: Field 'selectedGender' has not been initialized 报错解决方案 错误原因
你使用late关键字修饰了selectedGender变量,仅告知编译器「后续会在使用前完成赋值」,编译期不会做非空校验,因此Android Studio不会抛出代码错误。
但实际运行时,build方法首次执行渲染卡片时,就会读取selectedGender判断卡片颜色,此时用户还未点击卡片给变量赋值,因此直接触发运行时初始化错误。
可用解决方案
方案1:支持未选择性别初始状态(推荐)
将变量改为可空类型,默认无选中性别,两张卡片均显示未激活样式,无需修改其他业务逻辑:
// 替换原代码中的 late Gender selectedGender; Gender? selectedGender;
初始状态下selectedGender为null,和Gender.male、Gender.female的判等都会返回false,两张卡片默认使用inactiveCardColour,符合未选择性别的交互逻辑。
方案2:默认选中指定性别
如果需求要求页面加载时就有默认选中项,直接给变量赋初始值即可,可去掉late修饰:
// 默认选中男性,需要默认选女性改为Gender.female即可 Gender selectedGender = Gender.male;
内容的提问来源于stack exchange,提问作者jonnyf
相关产品推荐
相关产品推荐

