颤振中的异步函数不会返回null

时间:2020-04-17 11:08:26

标签: flutter dart

我正在尝试检查用户的登录名。但是,即使在if条件下,即使返回null,checklogin()也不等于null。

class HomeScreen extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        if(checkLogin() == null) {
          return Login();
        } else {
          return Dashboard();
        }
      }
      Future<String> checkLogin() async {
        var prefs = await SharedPreferences.getInstance();
        var key = 'Token';
        var value = prefs.getString(key);
        print(value);  
        return value;
      }
    }

2 个答案:

答案 0 :(得分:2)

我只是使用了将来的构建器,该构建器管理通过AsyncSnapshot从将来返回的数据。

class HomeScreen extends StatelessWidget {
      @override
      Widget build(BuildContext context) {

       return FutureBuilder(
        future: checkLogin(),
        builder: (BuildContext context, AsyncSnapshot snapshot){


        if (snapshot.hasData){
           var value = snapshot.data;
           if(value == null){
              return Login();
             }else{
              return Dashboard();
             }
        }else return Dashboard();
      }
    );
  }




      Future<String> checkLogin() async {
        var prefs = await SharedPreferences.getInstance();
        var key = 'Token';
        var value = prefs.getString(key);
        print(value);  
        return value;

      }
    }

答案 1 :(得分:0)

问题是methods: { faHoverStyle(e) { e = document.getElementById(e); e.getElementsByClassName("fa-circle")[0].classList.add( "fa-circle-hover" ); }, faNormalStyle(e) { e = document.getElementById(e); e.getElementsByClassName("fa-circle")[0].classList.remove( "fa-circle-hover" ); } } 函数异步并返回Future,您将等待并且直接在构建中等待。

因此,这是一个更好且正确的实现。 ``

.fa-circle {
    color: $color3;
    transition: all 0.5s ease-in-out 0s;
}
.fa-circle-hover {
    color: $color1;
    transition: all 0.5s ease-in-out 0s;
}

``