我是新手,可以管理不同的小部件状态。我正在尝试开发一个测试应用程序,该应用程序通过使用SharedPreferences检测到用户是新用户还是旧用户。它包括根据数据包含的布尔值刷新根窗口小部件。
为此,我实际上是使用子窗口小部件的回调函数来刷新根窗口小部件并保存sharedpreference。但实际上它不起作用。
RootPage.dart
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:boton_test/Pages/new_user_page.dart';
import 'package:boton_test/Pages/home_page.dart';
class RootPage extends StatefulWidget{
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return RootPageState();
}
}
class RootPageState extends State<RootPage>{
Future setTypeUserOld() async{
SharedPreferences preferences = await SharedPreferences.getInstance();
preferences.setBool('old_user', true);
}
Future getTypeUserWidget() async{
SharedPreferences preferences = await SharedPreferences.getInstance();
var key_old_user = preferences.getBool('old_user');
switch (key_old_user) {
case true:
return HomePage();
break;
default:
return NewUserPage(()=> setTypeUserOld());
}
}
@override
Widget build(BuildContext context) {
// TODO: implement build
getTypeUserWidget();
}
}
NewUserPage.dart
import 'package:flutter/material.dart';
class NewUserPage extends StatelessWidget{
final VoidCallback registerUser;
NewUserPage(this.registerUser);
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
appBar: AppBar(title: Text('New user'),),
body: Center(
child: RaisedButton(child: Text('registrar usuario'), onPressed: registerUser,),
),
);
}
}
我想将小部件刷新到主页并保存数据,但实际上在执行时会出现错误。