在setState()之后更新Flutter页面

时间:2017-12-31 21:29:14

标签: if-statement widget dart state 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());

有什么想法吗?我稍后会使用确切的代码进行更新。

1 个答案:

答案 0 :(得分:0)

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

  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; 
      });
  });
}