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

时间:2020-03-27 05:41:03

标签: firebase flutter google-cloud-firestore

我有这个数据结构 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

有什么办法解决吗?谢谢

1 个答案:

答案 0 :(得分:0)

您的activities字段似乎是嵌套地图。在第一层上,您还有Bali1字段,它也是地图。而且代码活动正在尝试使name处于第一级。

我想您应该在destination对象结构上做更多的工作。您可以将其打印出来以分析并尝试映射Map<dynamic, dynamic>和Bali1之类的对象。

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

我希望它将对您有帮助!