Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 未处理的异常:在构造函数中调用了setState():ReservationMakingState#861c9(生命周期状态:已创建,无小部件,未装入)_Flutter_Dart_Google Cloud Firestore - Fatal编程技术网

Flutter 未处理的异常:在构造函数中调用了setState():ReservationMakingState#861c9(生命周期状态:已创建,无小部件,未装入)

Flutter 未处理的异常:在构造函数中调用了setState():ReservationMakingState#861c9(生命周期状态:已创建,无小部件,未装入),flutter,dart,google-cloud-firestore,Flutter,Dart,Google Cloud Firestore,我正在创建一个可以预订船只租赁的应用程序,但我很难解决这个问题,有人能帮我吗? 提供代码示例: if (docs.size == 0) { reservations.doc(resID).set({ 'resID': resID, 'name': name, "surname": surname, "phone

我正在创建一个可以预订船只租赁的应用程序,但我很难解决这个问题,有人能帮我吗? 提供代码示例:


          if (docs.size == 0) {
            reservations.doc(resID).set({
              'resID': resID,
              'name': name,
              "surname": surname,
              "phoneNumber": phoneNumber,
              "rental": ProductCardInCart.rental,
              'boat': ProductCardInCart.boat,
              'date': date,
              'time': time
            }).then((value) {
              print("Reservation made");
              setState(() {
                Body.empty = true;
              });
            }).catchError((error) => print("Failed to reservate: $error"));
          } else if (docs.size != 0) {
            setState(() {
              Body.empty = false;
            });
            print('jestjus');
          }
        });
      } else {
        return;
      }
    });
  }
}
这个州运转良好

.then((value) {
              print("Reservation made");
              setState(() {
                Body.empty = true;
              });
但这一个不是,它抛出异常

} else if (docs.size != 0) {
            setState(() {
              Body.empty = false;
            });
            print('jestjus');
          }
其抛出的错误:

7980): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: setState() called in constructor: ReservationMakingState#861c9(lifecycle state: created, no widget, not mounted)
E/flutter ( 7980): This happens when you call setState() on a State object for a widget that hasn't been inserted into the widget tree yet. It is not necessary to call setState() in the constructor, since the state is already assumed to be dirty when it is initially created.

提前感谢您的帮助

您的
设置状态
无法工作的原因是您的小部件仍在构建中。在小部件完成第一次构建之前,它无法更新

这一条有效的原因是什么

。然后((值){
打印(“预订”);
设置状态(){
Body.empty=true;
});
});
是因为它发生在未来的
之后

如果您想在小部件初始设置后重建它,可以使用
小心使用。如果您在构建方法中使用它,您将陷入循环中!您应该在
initState
方法中使用它,或者在运行它之前使用一些条件语句

@覆盖
void initState(){
super.initState();
WidgetsBinding.instance.addPostFrameCallback((){
//做点什么把你的状态称为这里
});
}

我只是将其插入到我的方法中,似乎一点帮助都没有。这种方法是预订逻辑,如果它看到在这个时间和日期这艘船上已经有预订,它应该会在屏幕上显示文本,说明它不可用。您的方法是如何设置的?如果您只是复制并粘贴此代码来替换现有代码,那么它不会起任何作用。initState需要在构建方法之外才能工作。我什么时候可以向您演示?你对此有何看法?