使用 Riverpod flutter 从模型进行状态传输

问题描述 投票:0回答:1

现在我正在学习 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 不是最佳选择。

请告诉我如何正确执行此操作?

点击后变量会更新,您还需要通知使用该变量的小部件有关更改。

我查看了示例,但鉴于我有一个模型,无法理解如何做出最佳选择。

如果您提供建议或代码示例,我将不胜感激。

flutter dart state riverpod flutter-change-notifier
1个回答
0
投票

需要构造函数

class RiverpodModel extends ChangeNotifier {

String name = 'Name';

 RiverpodModel() {
   updateName();
 }

 void updateName() {
   name = 'new';
   notifyListeners();
 }

但我认为使用注释更容易

https://riverpod.dev/es/docs/migration/from_change_notifier[在此处输入链接描述]1

© www.soinside.com 2019 - 2024. All rights reserved.