gpt4 book ai didi

flutter - shared_preferences 在现有值上返回 null

转载 作者:IT王子 更新时间:2023-10-29 07:12:00 27 4
gpt4 key购买 nike

我正在尝试查看我的应用程序的 shared_pereferences 中是否有可用的 id 键,如果有,则将我的用户重定向到主页。我在 main.dart 的 initState() 函数中检查 Id,我知道该 id 存在,因为我可以在其他页面中获取它。但在我的 main.dart 中它返回 null。有任何想法吗?这是我的 main.dart 代码:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

import './ui/pages/auth/auth_one.dart';
import './ui/pages/main_page.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() {
SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitDown, DeviceOrientation.portraitUp])
.then((_) => runApp(MyApp()));
}

class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
String userId;
@override
void initState() {
_getUserId().then((id) => userId = id);

super.initState();
}

@override
Widget build(BuildContext context) {
print(userId);
return MaterialApp(
theme: ThemeData(primarySwatch: Colors.deepPurple),
debugShowCheckedModeBanner: false,
home: userId == null ? AuthOne() : MainPage(),
);
}

_getUserId() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
var id = prefs.getString('id');
return id;
}
}

最佳答案

您的 _getUserId 方法是异步的,因此您必须在获得结果后刷新小部件。

使用这个:

         @override
void initState() {
_getUserId().then((id) {
//calling setState will refresh your build method.
setState(() {
userId = id;
});
});
super.initState();
}

关于flutter - shared_preferences 在现有值上返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55562022/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com