我很确定我的所有设置都正确,或者至少非常接近正确。但是,要么notifyLister(),我consumer的不工作,要么两者兼而有之。
我的UserModel设置是这样的
...
class UserModel with ChangeNotifier {
Map<dynamic, dynamic> _user;
Map get user {
return _user;
}
void setUser(user) {
_user = user;
notifyListeners();
}
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序设置是这样的 main.dart
...
void main() {
runApp(ChangeNotifierProvider(
builder: (context) => UserModel(),
child: MyApp()
),
);
}
Run Code Online (Sandbox Code Playgroud)
接下来,我有一个按钮,调用setUser的方法UserModel
...
UserModel().setUser(user);
...
Run Code Online (Sandbox Code Playgroud)
最后,我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),
);
},
),
....
Run Code Online (Sandbox Code Playgroud)
user.user最初放置在屏幕上是正确的,因为刚开始时null,当用户登录时,_user模型设置为其最终值,UI 不会更新。我做错了什么?
here you created new object ;
UserModel().setUser(user);
Run Code Online (Sandbox Code Playgroud)
so you set the user in empty object you will never use it should be
Provider.of<UserModel>(context).setUser(user);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3860 次 |
| 最近记录: |