我正在尝试检查用户的登录名。但是,即使在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;
}
}
答案 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;
}
``