Flutter页面跳转传参报错:未定义named parameter 'receiveddata'
Flutter页面间参数传递问题解决方案
你的核心问题是接收页面的StatefulWidget未对外暴露参数入口,再加上代码里的拼写错误,导致参数无法正常传递。下面是修正后的完整实现方案:
第一步:修正接收页面(receivingpage.dart)
原代码把参数定义在了State类里,且StatefulWidget没有提供参数接收入口,同时存在类名拼写错误,修正后代码如下:
import 'package:flutter/material.dart'; // 遵循Dart规范,类名首字母大写 class ReceivingPage extends StatefulWidget { // 在StatefulWidget层声明要接收的参数 final String receivedData; // 构造函数,对外暴露参数入口 const ReceivingPage({ super.key, required this.receivedData, // 标记为必填参数 }); @override _ReceivingPageState createState() => _ReceivingPageState(); } class _ReceivingPageState extends State<ReceivingPage> { // 无需单独声明参数,直接通过widget.receivedData访问 @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('接收页面')), body: Center( // 使用传递过来的参数 child: Text('收到的数据:${widget.receivedData}'), ), ); } }
第二步:修正发送页面(senderpage.dart)的跳转代码
原代码跳转的类名错误,现在传入正确的参数:
onTap: () => Navigator.push( context, MaterialPageRoute( builder: (context) => ReceivingPage( receivedData: '这是要传递的字符串', // 传入你需要的字符串/整数等 ), ), ),
如果需要传递整数,只需要做两处修改:
- 接收页面中把
final String receivedData;改为final int receivedData; - 发送页面传入
receivedData: 123即可
错误原因说明
你之前在跳转时传入receiveddata,但原代码中的receivingpage Widget本身并未定义这个参数,所以编译器找不到对应的命名参数,从而报错。必须在StatefulWidget的构造函数中先声明参数,外部才能正常传入。
内容的提问来源于stack exchange,提问作者emsiloader
相关产品推荐
相关产品推荐

