Flutter中showTimePicker获取值后变为null的问题求助
问题解决方法
核心问题
vTimeSelected未作为State类的成员变量声明,导致组件重建时变量被重新初始化回到null状态;同时需确保状态更新后触发UI重建。
修复步骤
在State类中声明成员变量
在你的State子类中添加vTimeSelected的定义:class _YourWidgetState extends State<YourWidget> { TimeOfDay? vTimeSelected; // 声明为State成员变量 // ... 其他代码 }修正按钮点击逻辑
确保获取时间后,通过setState通知Flutter更新UI:ElevatedButton( child: const Text('Time'), onPressed: () async { final selectedTime = await getTimeSelected(context); setState(() { vTimeSelected = selectedTime; // 赋值操作放在setState内 }); }, ),保留getTimeSelected函数
你的时间选择函数无需修改,保持原样即可:Future<TimeOfDay?> getTimeSelected(BuildContext context) async { TimeOfDay vTime = TimeOfDay(hour: 0, minute: 0); TimeOfDay? newTime = await showTimePicker(context: context, initialTime: vTime); return newTime; }
修复原理
- 把
vTimeSelected设为State成员变量后,它的值会被State对象保留,不会随组件重建而丢失。 - 在
setState内赋值,会触发Flutter重新构建UI,此时Text组件就能读取到最新的vTimeSelected值。
内容的提问来源于stack exchange,提问作者9omi
相关产品推荐
相关产品推荐

