Flutter状态管理器

状态管理

状态

Flutter是声明式编程,Widget定义的UI都是在build()函数中实现的,这个函数的功能就是将状态转换成UI。

UI = f(state)

官方对状态的定义如下:

whatever data you need in order to rebuild your UI at any moment in time

翻译过来就是:状态就是任何时间任何场景下重构UI所需要的数据。

这里面至少可以看到两层含义:

状态就是数据;
状态的改变驱动了UI的改变。

状态的分类

我们可以把状态分为局部状态和全局状态。

局部状态就是Widget中内部持有的状态,典型代表就是StatefuleWidget和它对应的State。局部状态只会影响单个Widget的UI呈现。

当某个状态需要在多个Widget使用,或者在整个APP中使用,那它就是全局状态了。全局状态的典型代表就是InheritedWidget。

我们在InheritedWidget的使用和源码分析这篇文章中已经详细介绍过了InheritedWidget的相关内容,当然我们也提到过它的一些不是太完善的地方。

状态管理库

我们这里所说的状态管理库主要是指对全局状态的一些处理库,除了InheritedWidget外,还有一些最近非常流行的库:

flutter_bloc

它目前是评分最高的库,适合大型的项目。但是它有一个缺点就是理解起来比较困难,编写代码方式也很独特,需要编写一些重复的代码模板。

Provider

它是Flutter官方团队共同维护的一个项目,由于有官方背景,所以不用担心后期的维护升级问题。

getx

getx是目前上升趋势最快的一个库,使用非常简单,代码也很简介,功能很多。

当然还有其他一些库,譬如mobx,flutter_redux等,当然你很大可能也不会用到。

原文链接:https://blog.csdn.net/lcl130/article/details/115603504

你可能感兴趣的:(Flutter状态管理器)