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

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,
      ),
    ),
  );
}

额外建议

  1. 验证文本非空:如果需要确保姓名不为空再跳转,可以在方法中添加判断:
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('请填写完整姓名')),
    );
  }
}
  1. 同步SharedPreferences数据:如果用户修改了姓名但还未点击"CONFIRM",跳转时传递的是当前输入框的内容而非已保存到SharedPreferences的数据,这符合当前逻辑;若需传递已保存的数据,可直接从widget.prefs获取:
firstName: widget.prefs.getString('firstName') ?? '',
lastName: widget.prefs.getString('lastName') ?? '',

内容的提问来源于stack exchange,提问作者sᴍᴏᴋᴇᴅ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 00:39:51