[译]Flutter – 使用Provider实现状态管理

本文详细介绍了如何在Flutter中使用Provider进行状态管理,结合一个名为MoolaX的汇率计算应用实例,阐述了如何搭建应用架构,实现业务逻辑与UI的分离。文章提到了Provider是一个状态管理辅助工具,它作为Widget帮助传递model对象给子Widget。内容涵盖了模型、视图模型和服务的创建,以及如何在大型应用中有效使用Provider。
摘要由CSDN通过智能技术生成

这篇文章好的的地方在于它不仅讲了Flutter Provider如何管理State的,还讲述了一个Flutter App可以采用哪一种架构。这种架构是基于clean architectureFilledStacks这两种架构原则的(这里可能理解或者表达有误,请指正)。但是文中最后采用的还是MVVM的模式。

更加重要的一点,就是本文要讲述的Provider其实就是一种widget。搭配着Consumer这个widget一起使用,达到UI = f(state)这个state变化,UI跟着变的效果。

最后,还是那句话要看原文的请到这里,文章本身有质量,而且写的不难。

正文

Flutter团队建议初学者使用Provider来管理state。但是Provider到底是什么,该如何使用?

Provider是一个UI工具。如果你对于架构、state和架构之间有疑惑,那么并不只有你是这样。本文会帮助你理清这些概念,让你知道如何从无到有写一个app。

本文会带你学习Provider管理state的方方面面。这里我们来写一个计算汇率的app,就叫做MoolaX。在写这个app的时候你会提升你的Flutter技能:

  1. app架构
  2. 实现一个Provider
  3. 熟练管理app的state
  4. 根据state的更改来更新UI

注意:本文假设你已经知道Dart和如何写一个Flutter的app了。如果在这方面还有不清楚的话请移步Flutter入门

开始

点击“下载材料”来下载项目的代码。然后你就可以一步一步的跟着本文添加代码完成开发。

本文使用了Android Studio,但是Visual Studio Code也是可以用的。(其实VS Code更好用,译者观点)。

在MoolaX里你可以选择不同的货币。App运行起来是这样的:

打开初始项目,解压后的starter目录。Android Studio会出现一个弹出框,点击Get dependencies

在初始项目里已经包含了一部分代码,本教程会带着你添加必要的代码,让你轻松学会下文的内容。

现在这个app运行起来的时候是这样的:

搭建App的架构

如果你没听说过clean architecture,再继续之前请阅读这篇文章。

主旨就是把核心业务逻辑从UI、数据库、网络请求和第三方包中分离出来。为什么?核心业务逻辑相对并不会那么频繁的更改。

UI不应该直接请求网络。也不应该把数据库读写的代码写的到处都是。所有的数据都应该从一个统一的地方发出,这就是业务逻辑。

这就形成了一个插件系统。即使你更换了一个数据库,app的其他部分也不会有任何的感知。你可以从一个移动端UI更换的一个桌面UI,app的其他部分也并不用关心。这对于开发一个易于维护、扩展的app来说十分有效。

使用Provider管理state

MoolaX的架构就符合这个原则。业务逻辑处理汇率相关的计算。Local Storage、网络请求和Flutter的UI、Provider这些全部都互相独立。

Local storage使用的是shared preferences,但是这个和app的其他部分没有关联。同理网络请求如何获取数据和app的其他部分也没有任何关联。

接下来要理解的是UI、Flutter和Provider都在同一个部分里。Flutter就是一个UI框架,Provider是这个框架里的一个widget。

Provider是架构吗?不是。
Provider是状态管理吗?不是,至少在这个app里不是。

state是app的变量的当前值。这些变量是app的业务逻辑的一部分,分散、管理在不同的model对象里。所以,业务逻辑管理了state,而不是Provider。

所以,Provider到底是什么呢?

它是状态管理的helper,它是一个widget。通过这个widget可以把model对象传递给它的子widget。

Consumer widget,属于Provider 包的一部分,监听了Provider暴露的mode值的改变,并重新build它的全部子widget。

使用Provider管理state系列对state和provider做了更加全面的解析。Provider有很多种,不过多数不在本文的范围内。

和业务逻辑通信

文本的架构模式受到了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不是流言蜚语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值