如何解决退出应用程序时,Flutter 保存应用程序的状态应用程序在登录主页后从登录页面启动
我是 Flutter 和 REST API 的新手,所以放轻松。我的应用程序应该根据我学到的 YouTube 视频保存其状态。但是,当我登录并退出应用程序时,下次我打开应用程序时,它不是从主页启动,而是从登录页面启动。如果用户上次没有退出,它应该保存用户的状态并从主页开始。
这是我的主页代码:
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (BuildContext context) => UserData(),child: MaterialApp(
title: 'Curtain App',debugShowCheckedModeBanner: false,home: FutureBuilder(
future: AuthService.getToken(),builder: (context,snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator();
}
if (snapshot.hasData) {
Provider.of<UserData>(context).currentUserId = snapshot.data.uid;
return HomeScreen();
} else {
return LoginScreen();
}
},),);
}
}
这是我使用 Session 保存状态的代码:
static setToken(String token,String refreshToken) async {
_AuthData data = _AuthData(token,refreshToken);
await SESSION.set('tokens',data);
}
static Future<String> getToken() async {
return await SESSION.get('tokens');
}
static removetoken() async {
await SESSION.prefs.clear();
}
class _AuthData {
String token,refreshToken;
_AuthData(this.token,this.refreshToken);
// toJson
// required by Session lib
Map<String,dynamic> toJson() {
final Map<String,dynamic> data = Map<String,dynamic>();
data['token'] = token;
data['refreshToken'] = refreshToken;
return data;
}
var user = await DatabaseService.loginUser(_username,_password);
final data = json.decode(user);
print("Hi ${data['username']}");
print("Status ${data['status']}");
print("Token ${data['token']}");
if (data['username'] != null) {
AuthService.setToken(data['token'],data['refreshToken']);
Navigator.push(//code);
}
如果您对如何修复它有任何想法,请告诉我。 和平...
解决方法
您必须检查您的用户 ID 不能为空。
if (snapshot.hasData) {
Provider.of<UserData>(context).currentUserId =snapshot.data.uid;
if(snapshot.data.uid!=null){
return HomeScreen();
} else {
return LoginScreen();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。