【问题标题】:I keep getting a slight null error when using stream builder in flutter [closed]在颤振中使用流生成器时,我不断收到轻微的空错误[关闭]
【发布时间】:2020-08-25 04:06:45
【问题描述】:

在显示我的项目之前,我不断收到轻微的 null 错误。请问我可以在没有遇到任何错误的情况下获得有关使用 streambuilder 的最佳方法的帮助吗?

【问题讨论】:

  • 你能分享一个代码 sn-p 以便 SO 的人可以看看并帮助你吗?

标签: android ios firebase flutter google-cloud-firestore


【解决方案1】:

使用ConnectionState:

          StreamBuilder(
            stream:  Firestore.instance.collection('stores').document(currentUserUID).snapshots(),
            builder: (context, AsyncSnapshot<DocumentSnapshot> snapshot) {
              if (snapshot.connectionState == ConnectionState.done) {
                return ListView.builder(
                    shrinkWrap: true,
                    itemCount: 1,
                    itemBuilder: (BuildContext context, int index) {
                      return ListTile(
                          contentPadding: EdgeInsets.all(8.0),
                          title: Text(snapshot.data.data["about"]),
                          leading: Text(
                            snapshot.data.data["location"],
                          ));
                    });
              } else if (snapshot.connectionState == ConnectionState.none) {
                return Text("No data");
              }
              return CircularProgressIndicator();
            },
          ),

https://api.flutter.dev/flutter/widgets/ConnectionState-class.html

【讨论】:

  • 在使用 StreamBuilder 时不能放置 ConnectionState,因为 Stream 始终处于活动状态。您必须使用 snapshot.hasData。你可以使用 ConnectionState 和 FutureBuilder 没问题
【解决方案2】:
StreamBuilder<QuerySnapshot>(
stream:
    Firestore.instance.collection('users').snapshots(),
builder: (context, snapshot) {
  if (snapshot.hasError)
    return Center(child:Text('${snapshot.error.toString()}'));
  if (snapshot.hasData) {
    final List<DocumentSnapshot> documents = snapshot
        .data.documents;
    return ListView.builder(
      itemCount: documents.length,
      itemBuilder: (context, index) => RestaurantCard(
        documents[index].documentID,
        name: documents[index].data['name'],
        address: documents[index].data['address'],
        image: documents[index].data['photo'],
      ),
      scrollDirection: Axis.horizontal,
    );
  } else {
    return Center(child: CircularProgressIndicator());
  }
},

)

【讨论】:

    猜你喜欢
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    • 2022-06-27
    • 2020-02-12
    • 2019-02-01
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多