Flutter中提供者有啥用?

Posted

技术标签:

【中文标题】Flutter中提供者有啥用?【英文标题】:What is the use of provider in flutter?Flutter中提供者有什么用? 【发布时间】:2020-01-30 18:51:55 【问题描述】:

好吧,我对 Flutter 有点陌生,我的问题是为什么我们在 Flutter 中使用提供程序,我知道它用于状态管理。但我希望了解提供程序最常见的用例。

【问题讨论】:

【参考方案1】:

您需要能够在小部件之间移动数据。这是一种简单的方法。

您在应用程序中启动您的根 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() 中,并将底层Widgets 放入其中:

   Consumer<MyStateClass>(builder: (context, state, child) 

      // your code here - return(SomeOtherWidget());
    )

或在您的构建方法中:

  @override
  Widget build(BuildContext context) 
   MyStateClass state = Provider.of<MyStateClass>(context);
   // ... TODO  ... return (Widget)

【讨论】:

【参考方案2】:

正如你问我们为什么在颤振中使用 provider,所以我将只提供理论上的解释,我认为这肯定会帮助你理解什么 实际上提供者是以及为什么使用它。

假设您正在开发一个包含大量文件夹和文件的大型应用程序。 现在,如果用户与您的应用程序进行了交互(比如按下按钮或类似的东西),那么应用程序必须再次构建自己以更新用户所做的更改。但是等等!这看起来不太划算,重新构建整个应用程序只是为了在某些特定部分进行更改。

所以,Provider 来解决这个问题。

Provider 基本上是一个容器或存储,用于存储并向您提供状态或数据。 此外,我们知道小部件像树一样排列在应用程序中。 因此,如果您将 Provider 分配给树中的任何节点,则该节点的所有子节点都可以访问 Provider 提供的数据。

在后台,Provider 带有一个 listener,这些 listener 被分配给 Provider 的小部件的子级 已附上。

因此,如果用户干扰任何具有侦听器的小部件,那么该应用将再次构建该特定(用户与之交互的)小部件(而不是整个应用)。

【讨论】:

【参考方案3】:

Provider 是InheritedWidget 的包装器,使它们更易于使用和更可重用。这可能是您应该开始的方法。

provider 包很容易理解并且不需要太多代码。它还使用了适用于所有其他方法的概念。

通过使用提供者而不是手动编写InheritedWidget,你得到:

简化资源的分配/处置 延迟加载 与每次都创建一个新类相比大大减少了样板 开发工具友好 消费这些InheritedWidgets的常用方法 通过复杂性呈指数增长的侦听机制(例如 ChangeNotifier,调度通知的 O(N²) 时间)提高了类的可扩展性。

见:Usage

这个答案是基于:provider

【讨论】:

【参考方案4】:

什么是提供者以及它是如何工作的?

Provider 是一种简单的状态管理方式,它基于 PUB_SUB 的概念,

这意味着有一个提供者和多个订阅者,这里称为消费者。例如:YouTube。

只要有变化,NotifyChangeListener 就会更新所有的消费者。

【讨论】:

以上是关于Flutter中提供者有啥用?的主要内容,如果未能解决你的问题,请参考以下文章

android/flutter 中的 settings_aar.gradle 有啥用?

JAVA中Annotation是啥,有啥用

XlaBuilder 有啥用?

网站安全防护(WAF)有啥用

Android中BaseColumns有啥用

cURL 有啥用? [关闭]