You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:54:02