无法在 Getx Flutter 中获取布尔值
Posted
技术标签:
【中文标题】无法在 Getx Flutter 中获取布尔值【英文标题】:Unable to get bool value in Getx Flutter 【发布时间】:2021-10-23 08:00:31 【问题描述】:我正在尝试开发登录检查器。以下代码应在用户登录时重定向到 HomeScreen,而在用户未登录时重定向到 LoginPage。但是即使它已经登录,它也只会重定向到 LoginScreen() 而不是 HomeScreen()。
用户模型:
class User
User(
required this.id,
required this.name,
required this.email,
required this.cart,
);
String id;
String name;
String email;
List cart;
用户控制器:
class UserController extends GetxController
RxString id = ''.obs;
RxBool isLoggedIn = false.obs;
RxString name = ''.obs;
RxString email = ''.obs;
RxString image = ''.obs;
RxList cart = [].obs;
final NetworkHandler _handler = NetworkHandler();
@override
void onInit()
super.onInit();
getUserDetails();
getUserDetails()
User _user = _handler.userDetails();
id.value = _user.id;
if (id.value != '')
isLoggedIn.value = true;
name.value = _user.name;
检查屏幕
class StateCheck extends StatelessWidget
var controller = Get.put(UserController());
StateCheck(Key? key) : super(key: key);
@override
Widget build(BuildContext context)
SizeConfig().init(context);
return Obx(
() => controller.isLoggedIn.value
? const HomeScreen()
: const LoginScreen(),
);
【问题讨论】:
【参考方案1】:首先你必须在SharedPreferences中设置登录值。
登录成功时
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool("isLogin", true);
退出
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool("isLogin", false);
您可以检查登录状态 ||在初始屏幕中检查这一点以获得最佳实践(在 init 方法中)
if(prefs.getBool('isLogin')==null||prefs.getBool('isLogin')==false)
// login screen
else
// home screen
【讨论】:
以上是关于无法在 Getx Flutter 中获取布尔值的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 spring boot 和 postgresql 获取布尔值以进行插入
如何使用 SharedPreferences 从 Flutter 中的列表中保存多个布尔值
布尔值的 Flutter Unknown 键:EnableTransactions