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

Flutter中使用FirebaseAnimatedList时如何将点击项数据传递到详情页

实现方案

你可以通过给详情页构造函数传参的方式实现数据传递,总共3步修改即可完成需求:

1. 修改SecondScreen,新增接收数据的参数

给SecondScreen的构造方法新增必填参数,用来接收列表点击项的完整数据:

class SecondScreen extends StatefulWidget {
  // 新增参数存储传入的列表项数据
  final Map itemData;
  const SecondScreen({Key? key, required this.itemData}) : super(key: key);

  @override
  _SecondScreenState createState() => _SecondScreenState();
}

class _SecondScreenState extends State<SecondScreen> {
  @override
  Widget build(BuildContext context) {
    return Container(
      width: MediaQuery.of(context).size.width,
      height: 250,
      decoration: BoxDecoration(
        border: Border.all(color: Colors.red),
        image: DecorationImage(
          fit: BoxFit.fill,
          // 通过widget调用父组件传入的参数
          image: NetworkImage(widget.itemData['image']),
        ),
      ),
    );
  }
}

如果需要调用其他字段,比如你之前存入的snapshot.key,直接用widget.itemData['key']即可,所有mydata中存在的字段都可以通过这个方式访问。

2. 完善第一屏的点击跳转逻辑

修改InkWell的onTap回调,跳转时将当前列表项的mydata传给SecondScreen:

return InkWell(
  onTap: () {
    Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => SecondScreen(itemData: mydata),
      ),
    );
  },
  child: // 原有child代码保持不变
);

可选优化(推荐)

如果项目中多处用到这个数据结构,可以把Map转换成强类型的实体类,避免字段名拼写错误、运行时类型异常的问题。

内容的提问来源于stack exchange,提问作者Muhammad Awais Younas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:39:02