有人能告诉我提供者是如何通知州的吗?
我不想使用ChangeNotifierProvider,你能给我一个没有图书馆的建议吗?
我只是需要更好的例子来解释。提供者如何结合InheritedWidget。
发布于 2022-01-31 05:27:03
您认为下面的示例(受答案这里的启发)和AnimatedBuilder如何?
import 'package:flutter/material.dart';
class MyChangeNotifier extends ChangeNotifier {
int count = 0;
void addOne() {
count++;
notifyListeners();
}
}
class MyApp extends StatelessWidget {
final MyChangeNotifier myChangeNotifier = MyChangeNotifier();
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: ExampleButton(myChangeNotifier),
),
floatingActionButton: FloatingActionButton(
child: const Icon(Icons.add),
onPressed: myChangeNotifier.addOne,
),
),
);
}
}
class ExampleButton extends StatelessWidget {
final MyChangeNotifier myChangeNotifier;
const ExampleButton(this.myChangeNotifier, {Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return AnimatedBuilder(
animation: myChangeNotifier,
builder: (context, child) {
return OutlinedButton(
onPressed: myChangeNotifier.addOne,
child: Text(
'Tap me - or the floating button\n\n${myChangeNotifier.count}',
textAlign: TextAlign.center,
));
});
}
}
void main() => runApp(MyApp());ChangeNotifier实现Listenable类。您可以看到这里如何监听该Listenable,例如使用AnimatedBuilder (我的代码所做的)。ChangeNotifyProvider (我知道,您不想这样做)也会为您实现这一点,并将更改通知小部件树中较低的部件。
发布于 2022-01-31 05:50:23
以下是一些给你的建议:
小部件侦听更改,并在有重新构建时相互通知。状态一发生变化,这个特定的小部件就会重新构建,而不会影响树中的其他小部件。
三个主要组件使这一切成为可能: Flutter中的ChangeNotifier类、ChangeNotifierProvider (主要用于我们的示例应用程序)和Consumer。
无论从ChangeNotifier类中观察到的状态发生什么变化,都会导致侦听小部件重新生成。提供者包提供不同类型的提供者--以下列出了其中一些:
提供程序类接受一个值并公开它,而不考虑ListenableProvider是用于listenable对象的特定提供程序。它将侦听,然后根据它询问小部件并受状态变化的影响,以便在监听器调用ChangeNotifierProvider与ListenableProvider相似时重新构建,但对于ChangeNotifier对象,并在需要时ValueListenableProvider侦听ValueListenable并公开值时自动调用ChangeNotifier.dispose。
StreamProvider侦听流,公开发出的最新值,并要求依赖于流的小部件重新构建FutureProvider,接受未来类,并在未来完成时根据其更新小部件
发布于 2022-01-31 08:17:37
https://stackoverflow.com/questions/70921402
复制相似问题