Я новичок и управляю различными состояниями виджетов.Я пытаюсь разработать тестовое приложение, в котором оно обнаружит, если пользователь новый или старый, с помощью SharedPreferences.Он состоит в обновлении корневого виджета в зависимости от логического значения, которое эти данные содержат.
Для этого я фактически использую функции обратного вызова из дочернего виджета, чтобы обновить корневой виджет и сохранить разделяемую настройку.Но на самом деле это не работает.
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,),
),
);
}
}
Я хочу обновить виджет на HomePage и сохранить данные, но на самом деле он выдает ошибки при выполнении.