首页 > 解决方案 > 将 firestore 数据下载到 Flutter List

问题描述

我是一个完整的颤振新手。

我想从 Firestore 下载一个简单的 carparkList 并将其放入列表(或地图??)。数据集似乎已成功下载(通过实际查看 print(cp) 中的数据来证明)。

但是在两行的“[”处出现了 synatx 错误(红色下划线):

  title: Text(widget.carparkList[index].data().['name']),

  subtitle: Text(widget.carparkList[index].data().['district']),

请帮助指出如何更正以下代码的语法错误:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';

class DownloadDataScreen extends StatefulWidget {

  List<DocumentSnapshot> carparkList = []; //List for storing carparks

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

class _DownloadDataScreen extends State<DownloadDataScreen> {
  @override
  void initState() {
    readFromFirebase();
    super.initState();
  }

  void readFromFirebase() async {
    await FirebaseFirestore.instance
        .collection('carpark')
        .get()
        .then((QuerySnapshot snapshot) {
    snapshot.docs.forEach((DocumentSnapshot cp) {
        widget.carparkList.add(cp);
     
        // the following 'print' proves that data are successfully downloaded from firestore.
        print('printing cp');
        print(cp.data().runtimeType);
        print(cp.data());
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text(
          'Car Park',
          style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
        ),
        centerTitle: true,
      ),
      body: Column(
        children: [
          ListView.builder(
            itemCount: widget.carparkList.length,
            itemBuilder: (BuildContext context, int index) {
              return ListTile(
                title: Text(widget.carparkList[index].data().['name']),
                subtitle: Text(widget.carparkList[index].data().['district']),
              );
            },
          ),
        ],
      ),
    );
  }
}


标签: flutter

解决方案


将它们更改为:

  title: Text(widget.carparkList[index].get('name')),

  subtitle: Text(widget.carparkList[index].get('district')),

推荐阅读