Flutter/Dart中如何将onTap()的值从一个页面传递到另一个页面
Flutter 页面跳转传值实现方案
你这个场景属于最基础的页面间参数传递,直接用构造函数传参即可实现,步骤如下:
第一步:给目标页面XDSections增加接收参数的构造函数
在XDSections页面的定义代码中,声明需要接收的参数并配置构造函数:
class XDSections extends StatefulWidget { // 声明接收的参数,可根据实际需求调整参数类型、增加多个参数 final String courseName; // 构造函数:required代表该参数为必填,不需要必填可删除required并给参数设默认值 const XDSections({super.key, required this.courseName}); @override State<XDSections> createState() => _XDSectionsState(); } // 在页面State中使用参数时,直接调用widget.courseName即可,示例: class _XDSectionsState extends State<XDSections> { @override Widget build(BuildContext context) { return Scaffold( body: Center( // 直接使用传递过来的课程名 child: Text(widget.courseName), ), ); } }
第二步:修改Courses页面的跳转逻辑,传参到目标页面
调整你现有onTap中的跳转代码,把获取到的课程名传入XDSections的构造函数:
onTap: () { // 先拿到要传递的课程名 String targetCourseName = doc["Course name"]; getCourseName(targetCourseName); Navigator.push( context, PageTransition( type: PageTransitionType.rightToLeft, // 跳转时把参数传入构造函数 child: XDSections(courseName: targetCourseName), ), ); },
补充说明
- 如果有多个参数需要传递,只需要在XDSections的类定义中新增对应字段,在构造函数中添加对应参数,跳转时同步传值即可
- 若传递的参数可能为空,可给构造函数参数设置默认值避免空异常,示例:
this.courseName = "未命名课程" - 如果该参数需要在多个不相关的页面/组件中共享使用,可选用Provider、GetX等状态管理方案做全局存储,你当前的单跳转场景不需要用到,构造函数足够满足需求
内容的提问来源于stack exchange,提问作者user13133459
相关产品推荐
相关产品推荐

