notifyListeners в флаттере не работает, т.е. значение вообще не обновляется - PullRequest
1 голос
/ 30 апреля 2020

ниже указан код моего UserProvider. Закомментированная строка в нем предназначена для целей тестирования, и когда она была использована, я получил вывод username as "test" на экране.


class UserProvider with ChangeNotifier {
  // UserModel _user = UserModel(username: "test", isLoggedIn: false, isVerified: false);
  UserModel _user;

  setUser(UserModel user) 
  {
    _user = user;
    notifyListeners();
    print("user data changed !");
  } 

  UserModel get getUser => _user;
}

Ниже показано, как я обновляю данные с помощью вызова API:

UserProvider().setUser(
                UserModel(
                username: user['username'] ?? 'Guest', 
                email: user['id'] != null ? user['email'] : 'not available', 
                avatar: user['id'] != null ? user['avatar'] : 'not available',
                ),
              ); 

нет ошибки во время выполнения, и у меня есть строка в методе setUser, которая должна проверить, был ли вызван метод или нет print("user data changed !"). и в терминале я получаю эту строку, так что функция не пропускается и определенно вызывается.

на экране Я вызываю данные, как показано ниже:

UserModel user;

  @override
  void didChangeDependencies() {
    user = Provider.of<UserProvider>(context).getUser;
    super.didChangeDependencies();
  }

и

Text("Hi, ${user.username}"),

Вывод не новых данных. или NULL, если закомментированная строка не используется, и если используется, username is test.

Так в чем же я ошибаюсь?

Вся помощь приветствуется.

Спасибо, что прочитали мой вопрос.

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