在setState()之后更新Flutter页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在setState()之后更新Flutter页面相关的知识,希望对你有一定的参考价值。

我有一个用户关注/取消关注页面,在Firebase中搜索关注者列表,如果找到了他们的usedID,则返回一个布尔值...

Future<Null> _friends() async {
    fb.child("users/${userid}/Following/${id}").onValue.listen((Event event) {

        setState((){
          if (event.snapshot.value != null) {
            friends == true;
          } else if (event.snapshot.value == null) {
            friends == false;
          }
        });
    });
  }

然后将bool设置为一个单独的函数,改变公共bool ...

bool friends;

问题是我的Widget / Scaffold在这里没有更新......

friends == true ? new RaisedButton(onPressed: unfollow()) :
                  new RaisedButton(onPressed: follow());

有任何想法吗?稍后我将使用确切的代码更新。

答案

问题是你使用了==(相等)比较运算符而不是=(赋值)。将您的代码更改为以下内容:

  Future<Null> _friends() async {
     fb.child("users/${userid}/Following/${id}").onValue.listen((Event event) {
      setState((){
        // this will return true or false which is what you want based on your code :)
        friends = event.snapshot.value == null; 
      });
  });
}

以上是关于在setState()之后更新Flutter页面的主要内容,如果未能解决你的问题,请参考以下文章

flutter setState机制

Flutter:setState 在第一次尝试时工作,但在响应 = 等待后没有工作

Flutter的setState更新原理和流程

Flutter - setState 不更新内部有状态小部件

编辑文本控制器更新小部件值而不调用 setState() - Flutter

在 Flutter 中从 main() 调用 setState()