Общие настройки, обновляющие корневой виджет - PullRequest
0 голосов
/ 13 мая 2019

Я новичок и управляю различными состояниями виджетов.Я пытаюсь разработать тестовое приложение, в котором оно обнаружит, если пользователь новый или старый, с помощью 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 и сохранить данные, но на самом деле он выдает ошибки при выполнении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...