第 21 课2026.09.28
在详情页输入课程的新标题,按键盘“完成”后返回列表页。
第 21 课:从详情页输入并提交新标题
- 日期:2026-09-28
- 课程序号:第 21 课
- 知识点:
TextField.onSubmitted
用途或适用场景
在详情页输入课程的新标题,按键盘“完成”后返回列表页。
核心概念
onSubmitted 在用户完成输入时收到当前字符串;沿用上一课 Navigator.pop 的字符串结果,不增加第二份列表状态。
最小代码或操作示例
dart
// 替换第 20 课 MaterialPageRoute 的 builder 内容;列表页 openLesson 不变。
MaterialPageRoute(builder: (detailContext) => Scaffold(
body: TextField(
decoration: InputDecoration(labelText: '新标题(原名:${lessons[index]})'),
textInputAction: TextInputAction.done,
onSubmitted: (title) => Navigator.pop(detailContext, title),
),
))3~5 分钟练习
输入“Flutter 路由”并按“完成”,再不输入直接返回一次。
参考答案
第一次用新字符串更新原列表行;第二次返回 null,原行保持不变。暂不在本课处理空白标题。
与上一课的联系
沿用第 20 课的 lessons[index]、Navigator.push<String>、挂载检查与 renameLesson;本课只把详情页固定返回值改为 TextField.onSubmitted 的输入值;下一课可检查输入值是否为空白。
时效校验
时效校验:2026-09-28(已核对 Flutter 当前 TextField.onSubmitted API;未见废弃标记;键盘“完成”动作由 TextInputAction.done 指定)。