You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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: '这是要传递的字符串', // 传入你需要的字符串/整数等
    ),
  ),
),

如果需要传递整数,只需要做两处修改:

  1. 接收页面中把final String receivedData;改为final int receivedData;
  2. 发送页面传入receivedData: 123即可

错误原因说明

你之前在跳转时传入receiveddata,但原代码中的receivingpage Widget本身并未定义这个参数,所以编译器找不到对应的命名参数,从而报错。必须在StatefulWidget的构造函数中先声明参数,外部才能正常传入。

内容的提问来源于stack exchange,提问作者emsiloader

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:52:41