Flutter新手求助:如何从其他页面向无状态组件传递参数?
向Flutter无状态组件传递参数的实现方式
把有状态组件改成无状态组件很简单,核心就是继承StatelessWidget,并在类的构造函数里声明需要传递的参数,具体实现如下:
1. 定义无状态组件
将原来的StatefulWidget替换为StatelessWidget,去掉createState方法,直接在组件类里声明参数:
class ProfileOthers extends StatelessWidget { // 构造函数,required标记必填参数,super.key处理组件key const ProfileOthers({super.key, required this.data}); // 声明需要接收的参数,用final保证不可变 final Map<String, dynamic> data; @override Widget build(BuildContext context) { // 在这里直接使用this.data即可,比如展示data里的内容 return Scaffold( body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text("用户名:${data['username']}"), Text("年龄:${data['age']}"), ], ), ), ); } }
2. 在其他页面调用组件
和调用有状态组件的方式一致,直接在构造函数里传入参数即可:
// 示例:在某个页面通过路由跳转传递参数 Navigator.push( context, MaterialPageRoute( builder: (context) => ProfileOthers( data: { "username": "张三", "age": 28, }, ), ), );
关键区别说明
无状态组件不需要维护内部状态,所以不需要State子类和createState方法。参数直接定义在组件类本身,并且必须是final类型——这是因为无状态组件的属性不可变更,符合其“无状态”的设计特性。
内容的提问来源于stack exchange,提问作者Wanner Desparno
相关产品推荐
相关产品推荐

