渐进式编程课
Flutter 目录
第 17 课2026.09.21

详情页保存成功后只更新对应列表行。

第 17 课:返回后刷新列表行

  • 日期:2026-09-21
  • 课程序号:第 17 课
  • 知识点:返回后刷新列表行

用途或适用场景

详情页保存成功后只更新对应列表行。

核心概念

沿用上一课的 saved 结果;true 表示详情页已保存,再更新原列表行。

最小代码或操作示例

text
onTap: () async {
  final saved = await Navigator.push<bool>(
    context,
    MaterialPageRoute(builder: (detailContext) => Scaffold(
      body: TextButton(
        onPressed: () => Navigator.pop(detailContext, true),
        child: Text(lessons[index]),
      ),
    )),
  );
  if (!context.mounted) return;
  if (saved == true) {
    setState(() => lessons[index] = "已完成:${lessons[index]}");
  }
}

3~5 分钟练习

从详情页用 Navigator.pop(context, false) 返回。

参考答案

saved 为 false,原列表行不更新。

与上一课的联系

沿用第 16 课 Navigator.push<bool> 得到的 saved 和详情页 pop(true);本课只新增返回后检查挂载状态并更新 lessons[index];完成练习后下一课可把这段异步处理移入 State 方法。

时效校验

时效校验:2026-09-24(Flutter 3.47.2 当前文档;Navigator.pop 结果与 BuildContext.mounted 均未见废弃说明;官方 API 页未单独标注最低 SDK)。

官方参考