簡體   English   中英

Flutter --> Listile 和 Streambuilder

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM