Flutter中使用Stateful Widget为状态对象赋值遇空值问题
问题分析与解决方法
你的代码里address变量初始值为null,在onTextFieldSaved方法中使用address?.firstName = value时,因为address是null,空安全的?.操作符会直接跳过赋值操作,导致address始终是null,执行_formKey.currentState!.save()后自然拿不到值。
修复步骤
初始化Address对象
在_ShippingAddressState类中,把Address? address;改为:Address address = Address();让
address从一开始就是一个实例,而非null。简化赋值逻辑
因为address已经是确定的非空实例,onTextFieldSaved里的赋值可以去掉?:void onTextFieldSaved(String? value, String type) { switch (type) { case 'first_name': address.firstName = value; break; } }
修改后的关键代码片段
class _ShippingAddressState extends State<ShippingAddress> { final _formKey = GlobalKey<FormState>(); // 初始化Address实例 Address address = Address(); @override Widget build(BuildContext context) { // 原有build代码保持不变 } void onTextFieldSaved(String? value, String type) { switch (type) { case 'first_name': // 直接赋值,无需空安全判断 address.firstName = value; break; } } }
完成修改后,点击按钮执行_formKey.currentState!.save()时,address就能正确保存输入框的值了。
内容的提问来源于stack exchange,提问作者Abhishek Kumar
相关产品推荐
相关产品推荐

