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

Flutter中如何通过Navigator将变量_id传递至另一个类?

解决Flutter中通过Navigator传递变量的问题

嘿,这事儿很简单,咱们直接用构造函数传参就搞定了,这也是Flutter里最常用的页面传参方式,分两步走:

第一步:修改目标页面(Search类),让它能接收参数

先给你的Search类加一个接收id的构造函数,这样它就能拿到从之前页面传过来的值了:

class Search extends StatelessWidget {
  // 声明要接收的id变量,用final保证不可变
  final int id;

  // 构造函数,用required标记这个参数是必须传递的(空安全要求)
  const Search({Key? key, required this.id}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    // 在这里你就可以直接用this.id来使用传递过来的_id啦
    return Scaffold(
      appBar: AppBar(title: const Text('Search Page')),
      body: Center(
        child: Text('从上个页面传来的ID是: $id'),
      ),
    );
  }
}

第二步:在跳转的时候把_id传进去

回到你原来的代码里,修改Navigator.push的部分,在创建Search实例的时候把_id传进去就行:

// 原来的跳转代码
Navigator.push(
  context,
  new MaterialPageRoute(
    builder: (context) => new Search ()));

// 修改后的代码
Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => Search(id: _id), // 这里把_id作为参数传入
  ),
);

额外小提醒

  • 如果你的_id有可能是null的话,记得把Search类里的id类型改成int?,同时构造函数里的required可以根据业务需求调整,比如改成this.id(允许空值)或者保留required但确保_id赋值后不为空。
  • 要是以后需要传递更复杂的数据(比如自定义对象),这种构造函数传参的方式同样适用,只需要把参数类型换成对应的对象即可。

这样一来,当你点击CHECK IN按钮跳转后,Search页面就能正常获取到你之前赋值的_id啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:07:50