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

从Firestore获取字段详情并在Carddetails.dart卡片中展示

Flutter Firestore 列表跳转详情页展示完整数据解决方案

步骤1:传递选中数据至详情页

在列表页面的ListTile点击事件中,将当前文档的完整数据(Firestore的DocumentSnapshot或封装的实体类对象)传递给Carddetails页面。

列表页面示例代码

假设已获取Firestore的QuerySnapshot并存储在_posts列表中:

ListView.builder(
  itemCount: _posts.length,
  itemBuilder: (context, index) {
    final post = _posts[index];
    return ListTile(
      leading: Image.network(post['image']),
      title: Text(post['name']),
      onTap: () {
        Navigator.push(
          context,
          MaterialPageRoute(
            builder: (context) => Carddetails(postData: post),
          ),
        );
      },
    );
  },
)

步骤2:详情页接收并渲染所有字段

在Carddetails.dart中定义接收数据的参数,再在卡片组件里逐一展示所有字段。

Carddetails.dart示例代码

class Carddetails extends StatelessWidget {
  final Map<String, dynamic> postData; // 若使用实体类可替换为对应类型

  const Carddetails({super.key, required this.postData});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(postData['name'])),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Card(
          child: Padding(
            padding: const EdgeInsets.all(16.0),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Image.network(postData['image']),
                const SizedBox(height: 16),
                Text('名称: ${postData['name']}', style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
                const SizedBox(height: 8),
                Text('描述: ${postData['description']}'),
                const SizedBox(height: 8),
                Text('发布时间: ${postData['timestamp']?.toDate().toString()}'),
                // 根据实际数据字段继续添加展示项
              ],
            ),
          ),
        ),
      ),
    );
  }
}

优化建议

  • 推荐用实体类封装Firestore数据,替代直接使用Map,提升代码可读性与类型安全性。例如创建Post类,通过fromFirestore方法将DocumentSnapshot转换为实体对象。
  • 图片加载可替换为CachedNetworkImage,优化加载速度与缓存效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:03:20