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