我正在努力学习如何使用Ffltter_riverpod进行国家管理,我很难理解ChangeNotifierProvider
的"需求"是什么,StateNotifierProvider
的"需求"也是如此.让我们以下面的ChangeNotifier
为例:
class CounterNotifier extends ChangeNotifier {
int value = 0;
void increment() {
value++;
notifyListeners();
}
}
为什么"建议"将ChangeNotifier
声明为ChangeNotifyProvider
,并将其用于ChangeNotifier
的值的watch()
和read()
,如下所示:
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
final counterProvider = ChangeNotifierProvider((ref) => CounterNotifier());
class ChangeCounterPage extends ConsumerWidget {
const ChangeCounterPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context, WidgetRef ref) {
return Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: () {
ref.read(counterProvider).increment();
},
child: const Icon(Icons.add),
),
body: Center(
child: Text(ref.watch(counterProvider).value.toString()),
),
);
}
}
为什么不直接使用ChangeNotifier
(就像我们对供应商所做的那样)?在Riverpod的官方文件中,它说:" we are using the ChangeNotifierProvider to allow the UI to interact with our ChangeNotifier class."
->;这是什么意思?ChangeNotifierProvider
是一个包裹在ChangeNotifier
周围的小部件,因此在小部件树中是"可见的"吗?我还读到,它使我们国家的"操纵"变得更容易或更容易管理,但我不明白为什么或如何需要它.