繁体   English   中英

在 flutter 中使用 StreamBuilder 和 collectionrefrence 作为快照

[英]use StreamBuilder with collectionrefrence as snapshot in flutter

我是 flutter 的新手,我正在尝试使用 StreamBuilder 从 firebase 云 Firestore 中检索类别列表到我的StreamBuilder应用程序中。 我正在使用flutter 2.8.0cloud_firestore: ^3.1.7这是我的 firestore 文档:类别集合这里是我的代码:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:harfanah/shared/loading.dart';

class categoriesMod extends StatefulWidget {
  const categoriesMod({ Key? key }) : super(key: key);

  @override
  _categoriesModState createState() => _categoriesModState();
}

class _categoriesModState extends State<categoriesMod> {
  @override
  Widget build(BuildContext context) {
    return Scaffold (
      body: StreamBuilder(
        stream: FirebaseFirestore.instance.collection('categories').snapshots(),
        builder: (context, snapshot) {
          if(!snapshot.hasData) {
            return loading();
          }
          return ListView.builder(
            itemCount: ,
            itemBuilder: ,
          );
        },
      ),
    );
  }
}

我真的很困惑如何使用ItemCountItemBuilder 我发现很多解决方案都说我应该使用这样的东西: itemCount: snapshot.data.documents.length但它不起作用。 数据甚至没有除这些以外的任何属性:数据属性

您需要指定StreamBuilder的类型,然后您可以使用 class QuerySnapshot中可用的属性/方法:

class _categoriesModState extends State<categoriesMod> {
  @override
  Widget build(BuildContext context) {
    return Scaffold (
      body: StreamBuilder<QuerySnapshot<Map<String,dynamic>>>(
        stream: FirebaseFirestore.instance.collection('categories').snapshots(),
        builder: (context, snapshot) {
          if(!snapshot.hasData) {
             return loading();
          }
          return ListView.builder(
            itemCount: snapshot.data!.docs.length,
            itemBuilder: (context,index){
              return ListTile(
                title: snapshot.data!.docs[index].data()["code"],
                leading: snapshot.data!.docs[index].data()["name"],
              );
            } ,
          );
        },
      ),
    );
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM