【问题标题】:Firestore <QuerySnapshot>Firestore <查询快照>
【发布时间】:2021-11-20 10:43:04
【问题描述】:

我的班级 GetInfo 有问题。 有一个错误。

名称“QuerySnapshot”在库“package:cloud_firestore/cloud_firestore.dart”和“package:firebase/src/firestore.dart(通过 package:firebase/firestore.dart)”中定义。 尝试对其中一个导入指令使用“作为前缀”,或者对除一个导入之外的所有指令隐藏名称。

class GetInfo extends StatelessWidget {
  const GetInfo({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Material(
      child: StreamBuilder<QuerySnapshot>(
          stream: FirebaseFirestore.instance.collection('stories').snapshots(),
          builder: (context, snapshot) {
            if (snapshot.hasError) {
              return Text('Something went wrong');
            }
            if (snapshot.connectionState == ConnectionState.waiting) {
              return Text('Loading');
            }
            return new ListView(
              children: snapshot.data!.docs.map((document) {
                return new ListTile(
                  title: Text(document.get('display_name')),
                  subtitle: Text(document.get('profession')),
                );
              }).toList(),
            );
          }),
    );
  }
}

我正在将 Flatter 与 Firebase、Firestore 一起使用。我正在尝试学习其中一门课程,但似乎这是基于旧的 Firebase 版本,我不知道如何修复代码。有什么建议吗?感谢您的回答!

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

    包更新请查看example

     body: StreamBuilder<QuerySnapshot<Movie>>(
            stream: moviesRef.queryBy(query).snapshots(),
            builder: (context, snapshot) {
              if (snapshot.hasError) {
                return Center(
                  child: Text(snapshot.error.toString()),
                );
              }
    
              if (!snapshot.hasData) {
                return const Center(child: CircularProgressIndicator());
              }
    
              final data = snapshot.requireData;
    
              return ListView.builder(
                itemCount: data.size,
                itemBuilder: (context, index) {
                  return _MovieItem(
                    data.docs[index].data(),
                    data.docs[index].reference,
                  );
                },
              );
            },
          ),
    
    final moviesRef = FirebaseFirestore.instance
        .collection('firestore-example-app')
        .withConverter<Movie>(
          fromFirestore: (snapshots, _) => Movie.fromJson(snapshots.data()!),
          toFirestore: (movie, _) => movie.toJson(),
        );
    

    【讨论】:

    • 嗨罗希特!感谢您的回答。不幸的是,我真的是颤振的初学者,不知道如何更改我的代码以适应这个例子。我应该在 Material 之后还是在 child 之后添加此代码?不知道为什么在 SteamBuilder> 是。在我的情况下应该是什么而不是 ?提前谢谢!
    • 使用模型我们可以很容易地组织我们的输出数据。这里是firestore提供的完整示例 --github.com/FirebaseExtended/flutterfire/tree/master/packages/…
    猜你喜欢
    • 2021-06-17
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2018-12-05
    相关资源
    最近更新 更多