[英]Flutter --> Listile and 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。 但是當我們嘗試使用列表在屏幕上打印時,我們得到一個錯誤。 你能幫助我嗎?
正如錯誤所說,您需要使用Material
Widget 包裝ListTile
小部件:
children: snapshot.data.documents
.map<Widget>((doc) => Card(child: ListTile(
title: Text(doc['name']),
subtitle: Text(doc['message']),
)))
.toList(),
如果您閱讀錯誤告訴您的內容,您可能會找到答案。 在 flutter 材料中,通常小部件必須放在其他一些小部件的頂部。 就像我們在混凝土地板上鋪瓷磚一樣。 所以混凝土為瓷磚提供了基礎。
您缺少的是列表視圖不在基礎材料小部件之上。 要解決這個問題,只需將它們包裝在 Scaffold 或任何類似的基本小部件中。 如果您使用腳手架,請將其用作根小部件。
像這樣,
Widget build(BuildContext context) {
return Scaffold(
body : //Your widget
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.