我很确定我的所有设置都正确,或者至少非常接近正确。但是,notifyLister()
,我的consumer
不能正常工作,或者两者都不能工作。
我有这样的UserModel
设置
...
class UserModel with ChangeNotifier {
Map<dynamic, dynamic> _user;
Map get user {
return _user;
}
void setUser(user) {
_user = user;
notifyListeners();
}
}
我在main.dart
中有这样的应用设置
...
void main() {
runApp(ChangeNotifierProvider(
builder: (context) => UserModel(),
child: MyApp()
),
);
}
接下来,我有一个按钮,该按钮在setUser
UserModel
方法
...
UserModel().setUser(user);
...
最后,我在Consumer
的构建方法中的一列中嵌套了app.dart
....
Consumer<UserModel>(
builder: (context, user, child) {
return user.user == null ? Text(
'NULL ${user.user}',
style: TextStyle(fontSize: 28),
) : Text(
'NOT NULL ${user.user}',
style: TextStyle(fontSize: 28),
);
},
),
....
首先将 user.user
放在屏幕上是正确的,因为它以null
开始,但是,当用户登录模型中的_user
时,其设置为最终值,用户界面不会更新。我做错了什么?
答案 0 :(得分:0)
在这里创建了新对象;
UserModel().setUser(user);
因此您将用户设置为空对象,则永远不会使用它
Provider.of<UserModel>(context).setUser(user);