firebase - 如何在 Flutter 中用 Column 或 ListView 类包装 StreamBuilder 类?

标签 firebase dart google-cloud-firestore flutter

我的 Flutter 应用程序出现问题,我有一个只返回 StreamBuilder 的类,它运行良好,显示来自 Cloud Firestore 的数据。但是,当我尝试将此类包装在 Column 或 ListView 类中时,它不会显示任何内容。

我需要这个来显示当前页面的名称。并且 AppBar 类已经带有应用名称,所以我也不能使用它。

有谁知道我可以如何包装它并让它继续运行?

一个工作示例代码

  class NewCardsList extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return new StreamBuilder<QuerySnapshot>(
      stream: firestore.collection('cards_list').snapshots(),
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (!snapshot.hasData) return const Text('Connecting...');
        final int cardLength = snapshot.data.documents.length;
        return new ListView.builder(
          itemCount: cardLength,
          itemBuilder: (int index) {
            final DocumentSnapshot _card= snapshot.data.documents[index];
            return new ListTile(
              title: new Text(_card['title']),
              subtitle: new Text(_card['description']),
            );
          },
        );
      },
    );
  }
}

示例代码不起作用

class NewCardsList extends StatelessWidget {

      @override
      Widget build(BuildContext context) {
        return new Column(
          children: <Widget> [
            Text("Your Card List"),
            StreamBuilder<QuerySnapshot>(
          stream: firestore.collection('cards_list').snapshots(),
          builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
            if (!snapshot.hasData) return const Text('Connecting...');
            final int cardLength = snapshot.data.documents.length;
            return new ListView.builder(
              itemCount: cardLength,
              itemBuilder: (int index) {
                final DocumentSnapshot _card= snapshot.data.documents[index];
                return new ListTile(
                  title: new Text(_card['title']),
                  subtitle: new Text(_card['description']),
                );
              },
            );
          },
        ]));
      }
    }

最佳答案

用 Flexible() 包装 Streambuilder,然后用 Column() 包装 Flexible,将列设置为脚手架的主体()

关于firebase - 如何在 Flutter 中用 Column 或 ListView 类包装 StreamBuilder 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51400549/

相关文章:

ios - Firebase - 对象数组未返回正常计数值

上传到存储时 Firebase Uncaught [object Object]

Android Firebase 在 MessagingAnalytics 中崩溃

css - 使用 dart sass 实现,grunt-sass 不会在不抛出错误的情况下编译 css 文件

dart - 制作一个非全屏的 Flutter 路线

firebase - 如何在后端使用 firebase 云函数直接调用函数来应用身份验证中间件

android - 无法解析 : firebase-auth-15. 0.0

flutter - 如何将 DrawerHeader 的高度设置为与 AppBar 的高度精确一致

firebase - 使用 Firebase Auth 登录 iOS 应用是否满足 'Export Compliance Information' 加密要求

php - 使用 google-api-php lib 获取 REST api 的 Firestore 访问 token