Flutter如何将父组件接收的路由参数传递给子组件
Flutter 子组件接收父组件路由传值实现方案
你当前的问题是子组件没有定义接收userLogin参数的入口,父组件调用子组件时也没有透传对应值,按以下两步修改即可正常使用:
第一步:改造子组件,新增参数接收
给_MainInfoWidget添加final String userLogin的必填属性,修改后代码如下:
class _MainInfoWidget extends StatelessWidget { final String userLogin; const _MainInfoWidget({Key? key, required this.userLogin}) : super(key: key); @override Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.symmetric(vertical: 20), child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ Icon( Icons.telegram_sharp, color: iconColor, size: 64, ), SizedBox(height: 20), Text('Password', style: AppAuthTitleStyle.LinkButton), SizedBox(height: 20), Text( 'Use password for $userLogin', style: AppDescribeTittleStyle.LinkButton, textAlign: TextAlign.center, ), ], ), ); } }
第二步:父组件调用子组件时透传值
StatefulWidget的Widget属性在State类中需要通过widget.属性名访问,修改父组件中初始化_MainInfoWidget的代码:
// 父组件build方法中ListView部分修改为 child: ListView( children: [ _MainInfoWidget(userLogin: widget.userLogin), ], ),
注意:如果后续嵌套层级更深,逐层传参逻辑会变繁琐,这种场景可以使用Provider、GetX等状态管理方案跨组件共享数据,当前两层组件的场景直接传参是最简单高效的实现方式。
内容的提问来源于stack exchange,提问作者Verc
相关产品推荐
相关产品推荐

