嗯,我是Flutter的新手,我的问题是为什么我们在Flutter中使用提供程序,我知道它用于状态管理。但我希望了解提供者的最常见用例
答案 0 :(得分:1)
您需要能够在小部件之间移动数据。这是一种简单的方法。
您可以通过以下方式在应用程序中启动root Build方法:
@override
Widget build(BuildContext context) {
return MultiProvider( // Multi means you can have more providers if you need
providers: [
ChangeNotifierProvider(builder: (context) => MyStateClass()),
],
child: MaterialApp(....
现在,您可以将所有需要共享的数据放在MyStateClass()
中,并将底层小部件放在其中:
Consumer<MyStateClass>(builder: (context, state, child) {
// your code here - return(SomeOtherWidget());
})
或在您的Build方法中:
@override
Widget build(BuildContext context) {
MyStateClass state = Provider.of<MyStateClass>(context);
// ... TODO ... return (Widget)
答案 1 :(得分:1)
正如您所问的,为什么我们在抖动中使用 provider ,所以我将只提供理论上的解释,我认为这肯定会帮助您理解什么 提供商实际上是什么,为什么使用它。
假设您正在处理包含许多文件夹和文件的大型应用程序。 现在,如果用户已经与您的应用程序进行了交互(例如按下了按钮或类似的按钮),则该应用程序必须重新构建自身以更新用户所做的更改。这看起来并不好,只是为了在某些特定部分进行更改而再次构建整个应用程序。
因此,提供商来解决此问题。
提供商基本上是一个容器或存储,用于存储状态或数据并向您提供状态。 此外,我们知道小部件像树一样排列在应用程序中。 因此,如果您将Provider分配给树中的任何节点,则该节点的所有子节点都将有权访问 Provider 提供的数据。
回到舞台,提供商附带了一个监听器,并且这些监听器被分配给提供商的窗口小部件的子级已附加。
因此,如果用户干扰了具有监听器的任何小部件,则该应用将仅再次构建该特定(用户与之交互)的小部件(而不是整个应用)。
答案 2 :(得分:0)
什么是提供商及其运作方式?
Provider是状态管理的一种简单方法,它适用于PUB_SUB的概念,
这意味着有一个提供者和多个订阅者,在这里被称为消费者。例如:youtube。
只要有更改,就会使用NotifyChangeListener来更新所有使用者。
答案 3 :(得分:0)
Provider是InheritedWidget
的包装,使它们更易于使用和可重复使用。这可能是您应该开始使用的方法。
provider
软件包易于理解,并且不需要太多代码。它还使用了适用于所有其他方法的概念。
通过使用提供程序,而不是手动编写InheritedWidget
,您将得到:
InheritedWidgets
的常用方法ChangeNotifier
,它是用于分发通知的O(N²)),从而提高了类的可伸缩性。请参阅:Usage
此答案的依据是:provider