Flutter中如何将Text widget的数据从一个屏幕传递到另一个屏幕
Flutter 跨屏传递Text组件内容实现方案
Flutter中静态Text组件的内容跨屏传递比TextField传值更简单,不需要依赖控制器取值,直接通过路由构造函数传参即可完成,操作分两步:
1. 改造目标页面FingerGoalSt,新增参数接收逻辑
给目标页的StatefulWidget添加final类型的字符串属性,用来接收传入的文本,同时调整构造函数要求传入该参数:
class FingerGoalSt extends StatefulWidget { // 新增属性存储传入的文本 final String passedContent; // 调整构造函数 const FingerGoalSt({super.key, required this.passedContent}); @override State<FingerGoalSt> createState() => _FingerGoalStState(); } class _FingerGoalStState extends State<FingerGoalSt> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Finger Goal')), body: Center( // 页面内通过widget.passedContent即可拿到传入的'Repetition' child: Text(widget.passedContent), ), ); } }
2. 修改当前页跳转逻辑,传入Text对应的文本值
你可以把Text里硬编码的'Repetition'抽成单独的变量,跳转构建目标页实例时直接传入该变量即可,不需要额外做取值操作:
// 把Text里的文本抽成变量,方便维护和传参 const targetText = 'Repetition'; // Text组件直接使用该变量 child: Text( targetText, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.normal), ), // 修改跳转逻辑,传入参数 onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (context) => FingerGoalSt(passedContent: targetText) ) ); },
补充:如果你的Text内容是动态变化的,只要把当前显示的文本存在当前页的状态变量中,跳转时直接传入这个状态变量即可,逻辑和传静态文本完全一致,不需要额外处理。
内容的提问来源于stack exchange,提问作者Kazi Faruque
相关产品推荐
相关产品推荐

