Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 带开关和颤振的Firestore中的状态变化问题真与假_Flutter_Google Cloud Firestore - Fatal编程技术网

Flutter 带开关和颤振的Firestore中的状态变化问题真与假

Flutter 带开关和颤振的Firestore中的状态变化问题真与假,flutter,google-cloud-firestore,Flutter,Google Cloud Firestore,我有一个开关,可以在isOnline和not之间改变用户的状态。 这是一个介于真与假之间的错误。 我用cupertino开关创建了一个方法: bool isOnline = true; 原始状态为true,因此用户可以看到它们在线可用 在cupertino开关中,我创建了一个函数: CupertinoSwitch( value: isOnline, onChanged: (bool value) {

我有一个开关,可以在isOnline和not之间改变用户的状态。 这是一个介于真与假之间的错误。 我用cupertino开关创建了一个方法:

bool isOnline = true;
原始状态为true,因此用户可以看到它们在线可用

在cupertino开关中,我创建了一个函数:

CupertinoSwitch(
                      value: isOnline,
                      onChanged: (bool value) {
                        setState(() {
                          changeState();
                          isOnline = value;
                        });
                      },
                    ),

我需要更新firestore系列:

 CollectionReference changestate = FirebaseFirestore.instance.collection('Consultant');
  Future<void> changeState() {
    var firebaseUser =  FirebaseAuth.instance.currentUser;
    return changestate
        .doc(firebaseUser.uid)
        .update({
      'isOnline': isOnline,
    },)
CollectionReference changestate=FirebaseFirestore.instance.collection('Consultant');
未来变更状态(){
var firebaseUser=FirebaseAuth.instance.currentUser;
返回变换状态
.doc(firebaseUser.uid)
.更新({
“isOnline”:isOnline,
},)
除了由内而外,所有功能都可以工作……当我将开关转到绿色时,它将返回数据库
false
,如果我将其关闭,它将返回
true

有什么建议吗?

请在您的州代码通话中提出

isOnline = value;
之后

方法

像这样,

CupertinoSwitch(
    value: isOnline,
      onChanged: (bool value) {
         setState(() { 
           isOnline = value; 
           changeState();      
          }); 
        }, 
      ), 

在您的状态代码调用中出现问题

isOnline = value;
之后

方法

像这样,

CupertinoSwitch(
    value: isOnline,
      onChanged: (bool value) {
         setState(() { 
           isOnline = value; 
           changeState();      
          }); 
        }, 
      ), 

这里有很多事情没有完成。如果你只想更新一个值,为什么不试试firebase实时数据库呢?Firestore有一个不同的用例,它不适用于简单的布尔更改。你会收到很多费用。另外,如果你想在flifter方面做得更好,你必须学习状态管理。SetState()重建整个屏幕,成本很高。我建议先学习提供商,然后再学习Bloc:这里有很多事情没有做。如果你只想更新一个值,为什么不试试firebase实时数据库呢?Firestore有不同的使用案例,它不适用于简单的布尔更改。你会收到很多费用。另外,如果你anna为了更好地掌握颤振,您必须学习状态管理。SetState()重建整个屏幕,而且成本高昂。我建议先学习提供商,然后再学习集团: