首页 > 解决方案 > Flutter --> Listile 和 Streambuilder

问题描述

class Messages extends StatelessWidget {
 const Messages ({Key key}) : super(key: key);

 @override
Widget build(BuildContext context) {
return StreamBuilder(
  stream: Firestore.instance.collection("messages").snapshots(),
  builder: (context, snapshot) {
    if (snapshot.hasError) {
      return Text("Errror ${snapshot.error}");
    }
    if (snapshot.connectionState == ConnectionState.waiting) {
      return CircularProgressIndicator();
    }
    return ListView(
      children: snapshot.data.documents
          .map<Widget>((doc) => ListTile(
                title: Text(doc['name']),
                subtitle: Text(doc['message']),
              ))
          .toList(),
    );
  },
);
}
}

大家好,我们可以从firebase中提取数据。我们可以打印到Debugprint。但是当我们尝试使用列表在屏幕上打印时,我们得到一个错误。你能帮助我吗 ?

在此处输入图像描述

标签: firebaseflutterdartfirebase-realtime-database

解决方案


正如错误所说,您需要用小部件包装ListTileMaterial部件:

children: snapshot.data.documents
          .map<Widget>((doc) => Card(child: ListTile(
                title: Text(doc['name']),
                subtitle: Text(doc['message']),
              )))
          .toList(),

推荐阅读