Флаттер: данные синглтона, геттер вызван на ноль - PullRequest
0 голосов
/ 13 сентября 2018

после того, как я получил данные (пользователя) из http-запроса, я хочу поместить эти данные в одиночный файл. Затем, в другом представлении, я хочу показать имя этого пользователя на боковой панели, но оно говорит: «Получатель« пользователь »был вызван на ноль». Вот мой код:

var user = await getUser(_username, _password);

      if (user.loginError == false){
        model.user = user;

        Navigator.of(context).pushNamedAndRemoveUntil(
            '/home_view', ModalRoute.withName('/home_view'));
       }

А вот когда я пытаюсь использовать user.name:

Widget hamburgerMenu() {
  Model model;
  return new Drawer(
    child: ListView(
      children: <Widget>[
        new UserAccountsDrawerHeader(
          accountName: Text(model.user.name,
            ...

1 Ответ

0 голосов
/ 13 сентября 2018

В hamburgerMenu() вы объявляете Model model;, но вы никогда не присваиваете ему никакого значения.Это всегда будет нулевым.Если это синглтон, вам нужно сделать что-то подобное

Widget hamburgerMenu() {
  Model model = Model.instance;//You fetch the instance of the singleton
  return new Drawer(
    child: ListView(
      children: <Widget>[
        new UserAccountsDrawerHeader(
          accountName: Text(model.user.name,
            ...

Кроме того, не делайте этого внутри функции сборки.Если это виджет с состоянием, сделайте это в функции initState()

...