导航到此页面时,我正在获取用户名和密码。 AuthProvider具有登录方法,该方法将从服务器获取authToken,而该令牌需要进入item_list页面。我需要做的就是自动单击按钮!感谢有人可以帮忙!
Widget _autoLogin() {
return FlatButton(
color: Colors.redAccent,
padding: EdgeInsets.all(15.0),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(5.0)),
child: Text('auto logging...', style: TextStyle(color: Colors.white)),
onPressed: () async {
var authProvider = Provider.of<AuthProvider>(context);
var loggedInUser = await authProvider.login(
widget.savedUsername, widget.savedPassword);
if (loggedInUser != null) {
setState(() {
Navigator.pushNamed(context, '/item_list');
});
}
},
);
}
答案 0 :(得分:0)
您可以将逻辑提取到函数中,而不是使按钮自动单击,您可以将其传递给按钮按下,也可以在从服务器获取authToken后调用它。
示例:-
Widget _autoLogin() {
return FlatButton(
color: Colors.redAccent,
padding: EdgeInsets.all(15.0),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(5.0)),
child: Text('auto logging...', style: TextStyle(color: Colors.white)),
onPressed: autoLogin,
);
}
autoLogin() async {
var authProvider = Provider.of<AuthProvider>(context);
var loggedInUser = await authProvider.login(
widget.savedUsername, widget.savedPassword);
if (loggedInUser != null) {
setState(() {
Navigator.pushNamed(context, '/item_list');
});
}
}
您还可以将autoLogin函数移至provider并提供它的引用,以便在获取authToken后可以调用此函数