我正在学习Riverpod,所以我正在尝试不同的东西,看看它是如何工作的。假设我的应用程序中有以下类:
class User {
String _name = "";
String _email = "";
String get email => _email;
String get name => _name;
set email(String value) {
_email = value;
}
set name(String name) {
_name = name;
}
}
因此,我创建了一个StateProvider来控制User对象中的更改:
final userProvider = StateProvider<User>((ref) {
return User();
});
它是这样访问的:
final user = ref.watch(userProvider);
...
Text('Value: ${user.name}'),
但是,当我更改提供程序的状态时,它不会重建我的UI。
ref.read(userProvider.notifier).state.name = 'John Doe'
我错过了什么?
1条答案
按热度按时间eni9jsuy1#
如果您仔细注意,您正在创建
User
的StateProvider。因此,更改单个示例字段并不意味着它是不同的示例(新用户),这就是更改/更新字段不会刷新UI的原因。需要传入新示例来更新UI。你可以做
但我更喜欢
copyWith
方法或者使用更新
还有模特班