Flutter 如何在第一屏前调用SharedReference
我正在登录屏幕上实现记住我选项,希望在创建小部件之前调用共享首选项。我们只有一个入口点,即Flutter 如何在第一屏前调用SharedReference,flutter,sharedpreferences,Flutter,Sharedpreferences,我正在登录屏幕上实现记住我选项,希望在创建小部件之前调用共享首选项。我们只有一个入口点,即主函数,但我们如何在这里调用函数来读取原始数据(电子邮件/密码) 读取布尔值 Future<bool> read(String key) async { final prefs = await SharedPreferences.getInstance(); return prefs.getbool(key); } 在构建任何窗口小部件之前,不要等待SharedRefe
主函数
,但我们如何在这里调用函数来读取原始数据(电子邮件/密码)
读取布尔值
Future<bool> read(String key) async {
final prefs = await SharedPreferences.getInstance();
return prefs.getbool(key);
}
在构建任何窗口小部件之前,不要等待SharedReference加载,只需显示一个带有进度指示器的加载程序窗口小部件,直到加载共享首选项,加载后,根据SharedReference加载的值显示所需的视图,以下是您如何修改代码,(将HomeView和RootView小部件替换为HomeView和/或路由的相应小部件)
void main(){
setupLocator();
runApp(材料应用程序)(
debugShowCheckedModeBanner:false,
主题:新主题数据(fontFamily:“OpenSans Light”),
initialRoute:Loader(),
onGenerateRoute:Router.generateRoute,
));
}
类加载器扩展StatefulWidget{
@凌驾
_LoaderState createState();
}
类_LoaderState扩展状态{
第一导航;
@凌驾
void initState(){
super.initState();
readSharedPref();
}
void readSharedPref()异步{
Utiles df=Utiles();
String isRem=wait df.read(“记住”);
如果(isRem.contains(“true”)){
设置状态(){
//firstNav='homeview';
firstNav=HomeView();//将HomeView替换为用于HomeView路由的小部件
});
}否则{
设置状态(){
//第一导航='/';
firstNav=RootView();//将RootView替换为用于/route的小部件
});
}
}
@凌驾
小部件构建(构建上下文){
return firstNav!=null?firstNav:Center(子项:CircularProgressIndicator(),);
}
}
在构建任何小部件之前,不要等待SharedReference加载,只需显示一个带有进度指示器的加载程序小部件,直到加载共享首选项,加载后,根据SharedReference加载的值显示所需的视图,以下是如何修改代码,(将HomeView和RootView小部件替换为HomeView和/或路由的相应小部件)
void main(){
setupLocator();
runApp(材料应用程序)(
debugShowCheckedModeBanner:false,
主题:新主题数据(fontFamily:“OpenSans Light”),
initialRoute:Loader(),
onGenerateRoute:Router.generateRoute,
));
}
类加载器扩展StatefulWidget{
@凌驾
_LoaderState createState();
}
类_LoaderState扩展状态{
第一导航;
@凌驾
void initState(){
super.initState();
readSharedPref();
}
void readSharedPref()异步{
Utiles df=Utiles();
String isRem=wait df.read(“记住”);
如果(isRem.contains(“true”)){
设置状态(){
//firstNav='homeview';
firstNav=HomeView();//将HomeView替换为用于HomeView路由的小部件
});
}否则{
设置状态(){
//第一导航='/';
firstNav=RootView();//将RootView替换为用于/route的小部件
});
}
}
@凌驾
小部件构建(构建上下文){
return firstNav!=null?firstNav:Center(子项:CircularProgressIndicator(),);
}
}
您需要将main
函数设置为async,并添加一个wait
和一行代码:
void main()异步{
//既然您的main是异步的,那么添加这些行是必要的
WidgetsFlutterBinding.ensureInitialized();
//现在您必须“等待”readSharedRef()函数
等待readSharedPref();
//这是你所有的代码
}
您需要将main
函数设置为async,并添加一个wait
和一行代码:
void main()异步{
//既然您的main是异步的,那么添加这些行是必要的
WidgetsFlutterBinding.enselineInitiated();
//现在您必须“等待”readSharedPref()函数
等待ReadSharedRef();
//这是你所有的代码
}
Future<bool> read(String key) async {
final prefs = await SharedPreferences.getInstance();
return prefs.getbool(key);
}
String firstNav;
void main() {
setupLocator();
readSharedPref();
if(firstNav!=null)
runApp(MaterialApp(
debugShowCheckedModeBanner: false,
theme: new ThemeData(fontFamily: 'OpenSans-Light'),
initialRoute: firstNav,
onGenerateRoute: Router.generateRoute,
));
}
void readSharedPref() async {
Utiles df=Utiles();
String isRem=await df.read("remember");
if (isRem.contains("true")) {
firstNav='homeview';
} else {
firstNav='/';
}
}
void main() {
setupLocator();
runApp(MaterialApp(
debugShowCheckedModeBanner: false,
theme: new ThemeData(fontFamily: 'OpenSans-Light'),
initialRoute: Loader(),
onGenerateRoute: Router.generateRoute,
));
}
class Loader extends StatefulWidget {
@override
_LoaderState createState() => _LoaderState();
}
class _LoaderState extends State<Loader> {
Widget firstNav;
@override
void initState() {
super.initState();
readSharedPref();
}
void readSharedPref() async {
Utiles df=Utiles();
String isRem=await df.read("remember");
if (isRem.contains("true")) {
setState(() {
// firstNav='homeview';
firstNav=HomeView(); // replace HomeView with the widget you use for homeview route
});
} else {
setState(() {
// firstNav='/';
firstNav=RootView(); // replace RootView with the widget you use for / route
});
}
}
@override
Widget build(BuildContext context) {
return firstNav != null ? firstNav : Center(child: CircularProgressIndicator(),);
}
}