0

所以我对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();
    // }
  }
}

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

4

0 回答 0