Flutter передает экземпляр пользователя в другое состояние и сохраняет его обновленным

#dart #flutter

#dart #flutter

Вопрос:

Я пытаюсь выполнить процесс входа / регистрации и перенаправить пользователя на панель мониторинга.

Итак, у меня есть этот метод:

 Future _redirectToDashboard() async {
    var route = new MaterialPageRoute(
      builder: (BuildContext context) => new Dashboard(userID: userID),
    );
    Navigator.of(context).push(route);
  }
  

А затем вызывает его после login() завершения.

 _register().whenComplete(() => _redirectToDashboard());
  

И затем Dashboard я делаю это:

 class Dashboard extends StatefulWidget
{
  int userID;
  Dashboard({Key key, this.userID}) : super(key: key);
  @override
  _Dashboard createState() => _DashboardState();
}
  

И используйте его с:

 Text('User ID: ${widget.userID}')
  

Но тогда я не могу сделать это в Dashboard классе:

 Dashboard({Key key, this.userID, this.name, this.balance}) : super(key: key);
  

несмотря на то, что я установил его в функции выше как:

 builder: (BuildContext context) => new Dashboard(userID: userID, name: name, balance: balance), 
  

Но это не работает. Я получаю сообщение об ошибке, которое name , например, не определено, почему я могу передать только один параметр? И есть ли способ, как я могу обновлять Dashboard новыми данными каждый раз, когда пользователь открывает это состояние?

Я читал, что я должен создать отдельный User класс со всеми свойствами. Но как я могу применить его к панели мониторинга?

Комментарии:

1. можете ли вы опубликовать окончательный код для класса Dashboard?

Ответ №1:

Я предполагаю, что вы добавили только параметры конструктора, не добавляя фактических членов класса.

 class Dashboard extends StatefulWidget
{
  final int userID;
  final String name;
  final String balance;
  Dashboard({Key key, this.userID, this.name, this.balance}) : super(key: key);
  @override
  _Dashboard createState() => _DashboardState();
}