【问题标题】:Updating Flutter page after setState()在 setState() 之后更新 Flutter 页面
【发布时间】:2018-06-11 06:17:15
【问题描述】:

我有一个用户关注/取消关注页面,该页面在 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 friends;

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

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

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

【问题讨论】:

  • 除非您展示如何检查 Firebase 数据,否则无法判断
  • @aziza 请查看添加的代码
  • 尽量不要在setState里面做if语句,而是有两个setState,一个在if里面,一个在else里面,并且都相应地设置friends值。

标签: if-statement widget dart state flutter


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-12-30
    • 2021-07-04
    • 2020-03-31
    • 2021-03-02
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    相关资源
    最近更新 更多