为什么在扑朔迷离中使用提供者

时间:2019-10-01 13:09:35

标签: flutter flutter-dependencies

嗯,我是Flutter的新手,我的问题是为什么我们在Flutter中使用提供程序,我知道它用于状态管理。但我希望了解提供者的最常见用例

4 个答案:

答案 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,您将得到:

  • 简化了资源的分配/处置
  • 延迟加载
  • 大大减少了每次创建新课程的样板
  • devtools友好
  • 消费这些InheritedWidgets的常用方法
  • 使用侦听机制的类的复杂性呈指数增长(例如ChangeNotifier,它是用于分发通知的O(N²)),从而提高了类的可伸缩性。

请参阅:Usage

此答案的依据是:provider

相关问题