【问题标题】:One-time Read Firebase Cloud (Dart/Flutter)一次性读取 Firebase Cloud (Dart/Flutter)
【发布时间】:2020-12-24 16:45:46
【问题描述】:

我需要从 Firebase Cloud 一次性读取数据,这就是我在项目 (dart/flutter) 中使用 FutureBuilder 的原因。但是当应用程序启动时,它会不停地读取(作为流)。我应该怎么做才能解决这个问题?

class Hello extends StatefulWidget {
  @override
  _HelloState createState() => _HelloState();
}

class _HelloState extends State<Hello> {

  Future getPosts() async{
    QuerySnapshot qn = await FirebaseFirestore.instance.collection("111").get();
    return qn.docs;
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: new Text('Hello'),
      ),
      body: FutureBuilder(
        future: getPosts(),
        builder: (context, snapshot){
          if(snapshot.connectionState == ConnectionState.waiting){
            return Center(
              child: CircularProgressIndicator(),
            );
          }
          else{
            return ListView.builder(
              itemCount: snapshot.data.length,
              itemBuilder: (context, index){
                return Text(snapshot.data[index].data()["subject"]);
              },
            );
          }
        },
      ),
    );
  }
}

【问题讨论】:

    标签: android ios firebase flutter dart


    【解决方案1】:

    来自FutureBuilder doc

    未来一定是更早获得的,例如期间 State.initState、State.didUpdateConfig 或 State.didChangeDependencies。期间不得创建 构造时调用 State.build 或 StatelessWidget.build 方法 未来建造者。如果未来与 FutureBuilder,那么每次重建 FutureBuilder 的父级时, 异步任务将重新启动。

    例子:

      Future<QuerySnapshot> future;
    
      @override
      void initState() {
        super.initState();
        future = Firestore.instance.collection("111").getDocuments();
      }
    
      // future : future
    

    【讨论】:

    • 你能写一个例子吗?
    • 你去 :)
    • 哦,谢谢)还有一个问题:没关系,当应用程序在所有设备上关闭时,firebase 会读取数据?)))
    • 对不起,我不明白这个问题。
    • 在 Firebase Analytics 中,读取次数有所增加,但所有设备上的应用程序都已关闭。
    猜你喜欢
    • 2017-10-10
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2020-04-28
    • 1970-01-01
    • 2023-04-02
    • 2022-08-20
    相关资源
    最近更新 更多