将 Firebase 中的地图数据检索到 Flutter

Posted

技术标签:

【中文标题】将 Firebase 中的地图数据检索到 Flutter【英文标题】:Retrieve Map Data in Firebase to Flutter 【发布时间】:2020-07-07 20:55:30 【问题描述】:

我有这个数据结构 Database Structure

我需要调用 FavDestination 集合中的所有项目,这是我在 Flutter 中的代码

child: StreamBuilder(
stream: Firestore.instance.collection('FavDestination').snapshots(),
builder: (context, snapshot)
if(!snapshot.hasData) return Text('Loading Data... Please Wait');
return
ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: snapshot.data.documents.length, //snapshot.data.document.length,
itemBuilder: (BuildContext context, int index) 
DocumentSnapshot destination = snapshot.data.documents[index];
//DocumentSnapshot destination = snapshot.data.document[index];
return GestureDetector(
                  onTap: () => Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (_) => DestinationScreen(
                        destination: destination,
                      ),
                    ),
                  ),

它成功检索数据,如果用户点击文档,它将转到目标屏幕,我需要检索活动中的所有数据,这是我在目标屏幕中的代码

Expanded(
        child: ListView.builder(
          padding: EdgeInsets.only(top: 10.0, bottom: 15.0),
          itemCount: widget.destination['activities'].length,
          itemBuilder: (BuildContext context, int index) 
            DocumentSnapshot activity = widget.destination['activities'][index];
            return Stack(
              children: <Widget>[
                  Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: <Widget>[
                       Container(
                          width: 120.0,
                          child: Text(
                          activity['name'],
                          style: TextStyle(
                          fontSize: 18.0,
                          fontWeight: FontWeight.w600,
                          ),

这是我得到的错误 Error Message

知道如何解决吗?谢谢

【问题讨论】:

错误表明activity['name'] 为空。这意味着您要么没有正确检索数据,要么没有正确处理它们。除非我看到完整的代码,否则我不能说。 【参考方案1】:

您的activities 字段似乎是嵌套映射。在第一级,您有字段Bali1,它也是地图。并且代码活动试图在第一级获取name

我想你应该更多地研究destination 对象结构。您可以将其打印出来进行分析,并尝试映射 Map&lt;dynamic, dynamic&gt; 和 Bali1 等对象。

我没有操场可以快速完成,但我在这里找到了类似的方法: How do I get specific values from a datasnapshot in flutter?

希望对你有帮助!

【讨论】:

以上是关于将 Firebase 中的地图数据检索到 Flutter的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何将元素添加到 Firebase 数据库中的映射字段?

将 Firebase 中的数据显示到自定义信息窗口中

Flutter 和 Firebase:从 Firebase 中的数组中删除项目(地图)

Android应用程序地图的当前位置lat,并长时间发送到firebase吗?

如何从firebase中的变量为地图添加价值?

如何将谷歌地图标记的纬度和经度发送到 Firebase - android? [关闭]