我创建了一个函数来检查用户,从API来检查用户是否登录。我使用这个是因为我API不是实时的。这是我的代码funcheckuser
void funfetchUser() async {
print('get user');
SharedPreferences prefs = await SharedPreferences.getInstance();
var token = prefs.getString('token');
try {
var headers = {
'Accept': 'application/json',
'Authorization': 'Bearer $token',
};
var url = Uri.parse(Api.base + Api.user);
https.Response response = await https.get(url, headers: headers);
if (response.statusCode == 200) {
var user = jsonDecode(response.body)['user'];
var isLogin = token;
print(isLogin);
UserList.email = user['email'];
UserList.userlongname = user['user_longname'];
UserList.userphone = user['user_phone'];
Future.delayed(Duration(seconds: 1), (() {
if (isLogin == null) {
Get.toNamed('/login');
} else {
print('stay');
}
}));
} else {
var login2 = jsonDecode(response.body);
print(login2);
// customAllertDialog("Sesi", 'Sesi Berakhir', 'error');
print('logout');
prefs.clear();
Get.toNamed('/login');
}
} catch (e) {
print(e);
prefs.clear();
}
}
我在我所有的控制器上创造这个乐趣
@override
void onInit() {
// TODO: implement onInit
super.onInit();
print('ini profile');
funfetchUser();
}
@override
void onReady() {
// TODO: implement onReady
super.onReady();
Timer.periodic(Duration(seconds:
30), (timer) {
print('cek user profile gan');
funfetchUser();
});
}
@override
void onClose() {
// TODO: implement onClose
super.onClose();
Get.delete<ProfilController>();
}
那个控制器总是运行即使我移动页面。我想调用每一个控制器在每一页,但一个n唯一的控制器运行是contoller配置文件
1条答案
按热度按时间mwg9r5ms1#
Getx
包内控制器的移除或不与路由有关并且不应该手动删除控制器****