【问题标题】:Futurebuilder is not updating data from firestoreFuturebuilder 没有从 Firestore 更新数据
【发布时间】:2022-10-02 10:18:19
【问题描述】:

所以我对futurebuilder有问题我希望我的应用程序在bool设置为true但它根本不工作时更新,所以我添加了一行来查看bool的值是否正在改变并发布它\'不改变。

  import \'package:cloud_firestore/cloud_firestore.dart\';
import \'package:databse_web_test/database_services/getsocials.dart\';
import \'package:flutter/material.dart\';

import \'database_services/request.dart\';

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

  @override
  State<RequestWidget> createState() => _RequestWidgetState();
}

class _RequestWidgetState extends State<RequestWidget> {
  String Doc = \"EobkN9fONF4IxmpErB1n\";

  CollectionReference request = FirebaseFirestore.instance
      .collection(\'socails\')
      .doc(\"daaJgE8Pz5UQIlNh47UsmwWcqNi1\")
      .collection(\"requests\");

  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
        future: request.doc(\"EobkN9fONF4IxmpErB1n\").get(),
        builder:
            (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
          if (snapshot.hasError) {
            return const Text(\"Something went wrong\");
          }

          if (snapshot.hasData && !snapshot.data!.exists) {
            return const Text(\"Document does not exist\");
          }

          if (snapshot.connectionState == ConnectionState.done) {
            Map<String, dynamic> data =
                snapshot.data!.data() as Map<String, dynamic>;

            bool isRequested = data[\"isRequested\"];
            bool isApproved = data[\"isApproved\"];
            if (data[\"isRequested\"] == true && data[\'isApproved\'] == true) {
              return GetSocialData();
            }
            // if (data[\'isApproved\'] == false && data[\'isRequested\'] == true) {
            //   return Column(
            //     children: [
            //       data[\'isApproved\'] == false
            //           ? const CircularProgressIndicator()
            //           : GetSocialData()
            //     ],
            //   );
            // }
            if (data[\'isApproved\'] == false && data[\"isRequested\"] == false) {
              return Center(
                  child: ElevatedButton(
                      onPressed: () {
                        SendRequest().updateUserData(
                            isApproved: false, isRequested: true);
                        setState(() {});
                      },
                      child: const Text(\"data send\")));
            } else {
              return Column(children: [
                CircularProgressIndicator(),
                Text(snapshot.data!.data().toString())
              ]);
            }
          } else {
            return const Text(\"Loading database\");
          }
        });

    // if (isRequested == true && isApproved == false) {
    //   return Center(
    //       child: ElevatedButton(
    //           onPressed: () {
    //             SendRequest()
    //                 .updateUserData(isApproved: false, isRequested: true);
    //           },
    //           child: const Text(\"data send\")));
    // } else {
    //   return GetSocialData();
    // }
  }
}

我真的不知道什么是错的,因为我是新来的颤振我不知道那么多。如果我要使用文本小部件来知道值是否正在改变,我就会知道该值没有改变。此网络应用程序连接到另一个 android 应用程序,该布尔值将由该应用程序更新

  • 哦抱歉我不小心写了streambuilder而不是future

标签: flutter flutter-web flutter-futurebuilder flutter-streambuilder


【解决方案1】:

颤振构建器是一次性读取的,因为如果您想使用实时读取,请使用流构建器,请在文档中查看:Flutter Cloud Firestore.

【讨论】:

    猜你喜欢
    • 2019-08-18
    • 2021-11-17
    • 2021-12-03
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多