现在我正在学习 Riverpod。
在此之前,我使用 Provider 包执行该功能,并使用了 ChangeNotifier。
学习文档后https://codewithandrea.com/articles/flutter-state-management-riverpod/我转换了代码并再次使用了ChangeNotifier。
下面是我的代码,我试图用一个简单的例子来理解
我有模型
class RiverpodModel extends ChangeNotifier {
String name = 'Name';
void updateName() {
name = 'new';
notifyListeners();
}
消费者小部件
final riverpodProvider =
ChangeNotifierProvider<RiverpodModel>((ref) => RiverpodModel());
class ProductPageView extends ConsumerWidget {
const ProductPageView({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final model = ref.watch(riverpodProvider);
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.grey[100],
elevation: 0,
),
drawer: const DrawerView(),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text('Card'),
const SizedBox(height: 15),
Text(model.name),
const SizedBox(height: 15),
ElevatedButton(
onPressed: () => ref.read(riverpodProvider).updateName(),
child: const Icon(Icons.refresh),
),
],
),
),
);
}
}
文档 https://codewithandrea.com/articles/flutter-state-management-riverpod/ 表示使用 ChangeNotifier 不是最佳选择。
请告诉我如何正确执行此操作?
点击后变量会更新,您还需要通知使用该变量的小部件有关更改。
我查看了示例,但鉴于我有一个模型,无法理解如何做出最佳选择。
如果您提供建议或代码示例,我将不胜感激。
需要构造函数
class RiverpodModel extends ChangeNotifier {
String name = 'Name';
RiverpodModel() {
updateName();
}
void updateName() {
name = 'new';
notifyListeners();
}
但我认为使用注释更容易
https://riverpod.dev/es/docs/migration/from_change_notifier[在此处输入链接描述]1