Flutter页面跳转时Firstname与Lastname无法显示求助
问题解决:Flutter页面跳转后姓名字段不显示
核心问题
你在跳转页面时传递的是TextEditingController实例,而非控制器中的文本内容,而HomePage的构造器要求接收String?类型的参数,导致姓名数据没有正确传递过去。
修复步骤
修改ManifestInformationWidgets.dart中的navigateToQRPageRegistered方法,将控制器实例替换为控制器的text属性:
void navigateToQRPageRegistered() { Navigator.push( context, MaterialPageRoute( builder: (context) => HomePage( // 传递控制器的文本内容而非控制器本身 firstName: _firstNameController.text, lastName: _lastNameController.text, ), ), ); }
额外建议
- 验证文本非空:如果需要确保姓名不为空再跳转,可以在方法中添加判断:
void navigateToQRPageRegistered() { if (_firstNameController.text.isNotEmpty && _lastNameController.text.isNotEmpty) { Navigator.push( context, MaterialPageRoute( builder: (context) => HomePage( firstName: _firstNameController.text, lastName: _lastNameController.text, ), ), ); } else { // 提示用户填写完整姓名 ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('请填写完整姓名')), ); } }
- 同步SharedPreferences数据:如果用户修改了姓名但还未点击"CONFIRM",跳转时传递的是当前输入框的内容而非已保存到SharedPreferences的数据,这符合当前逻辑;若需传递已保存的数据,可直接从
widget.prefs获取:
firstName: widget.prefs.getString('firstName') ?? '', lastName: widget.prefs.getString('lastName') ?? '',
内容的提问来源于stack exchange,提问作者sᴍᴏᴋᴇᴅ
相关产品推荐
相关产品推荐

