get包中的状态管理


我们在上一章回中介绍了"使用get进行依赖管理"相关的内容,本章回中将介绍如何使用get进行状态管理一.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

在Flutter开发中状态管理是必不可少的内容,我们在前面章回中介绍过这方面的内容,同时介绍了常用的状态管理组件:Provider.本章回中我们将介绍Get包中的状
态管理组件:GetBuilder,以及如何使用GetBuilder组件来管理状态。

2. 思路与方法

2.1 实现思路

使用GetBuilder组件实现状态管理的方法和使用Provider实现状态管理的方法类似,下面是具体的实现思路:

  • 创建一个数据模型类,用来管理数据,通常用是创建GetxController类的子类;
  • 在数据模型类中创建更新数据的方法,更新数据时调用父类的update方法;
  • 在页面中使用GetBuilder组件监听数据变化,并且把更新后的数据同步到该组件中生成的组件上;
  • 在页面中通过依赖管理获取到数据模型类对象, 并且调用调用更新数据的方法来更新数据;
    上面介绍的实现思路比较抽象,我们将在后面的小节中通过示例代码来演示。如果大家熟悉Provider的话,就会发现该思路和Provider基本上一样,不一样的地方是该
    思路中没有在main方法中设置providers,而是通过依赖管理来获取数据模型对象。还有就是一些细节上不同,比如,数据模型类的父类和监听数据更新的组件。稍后,
    我们将对这些中用到的组件进行详细的介绍。

2.2 相关组件

在上面介绍的实现思路中我们用到了GetxController类,它类似ChangeNotifier类,主要用来管理数据的更新,它也提供了update()方法来更新数据模型中的数
据,该方法的功能和notifyListeners()方法完全相同。上面思路中使用的GetBuilder组件主要用来监听数据变化,并且把更新后的数据同步到该组件中生成的组件
上,它生成组件时通过builder属性来实现,这个属性的用法类似官方同名的属性。GetBuilder组件类似Consumer组件,它们的用法十分相似。我们在这里就展开介
绍了,大家看一下示例代码就能明白它的用法。

3. 示例代码

///这个是配合GetBuilder使用的数据模型类
class ValueController extends GetxController {
  int iValue = 0;
  String strValue = "default string";

   ///
  void updateValue() {
    iValue = 666;
    strValue = "new String Value";
    update();
  }
}

///在页面中显示数据,页面中的数据会随着数据模型中的数据更新而更新
GetBuilder<ValueController>(
  ///init可以加也可以不加,GetBuilder会自动获取该对象
  init: ValueController(),
  builder: (controller) {
    return Text("intValue: ${controller.iValue.toString()}, strValue: ${controller.strValue}");
  }
),


///put方法通过依赖注入来初始化实例对象,然后更新数据
var getController = Get.put(ValueController());
getController.updateValue();
///使用了依赖管理技术获取实例并且更新数据
// Get.find<ValueController>().updateValue();

上面示例代码完全按照前面小节中的实现思路来编写,大家重点关注一下数据模型类的写法,GetBuilder生成子组件方法以及通过数据模型对象来更新数据的方法。我在
这里就不演示程序的运行结果了,建议大家亲自动手去实践,把更新数据的方法封装到按钮中,然后点击按钮就可以看到页面中的数据被更新了。

4. 内容总结

最后,我们对本章回中的内容做一个全面总结:

  • Get包中通过GetBuilder和GetxController来实现状态管理功能,实现的思路和Provider包相似,只是实现细节不同;
  • Get包中的状态管理使用了依赖管理技术,因此不需要专门设置providers,而且获取数据模型对象也比较方便,这些功能优于Provider包;
  • Get包中的状态管理在性能上优于Provider包,不过这是官方文档的介绍,我没有做过具体的性能分析;
    看官们,与"使用get进行状态管理"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

talk_8

真诚赞赏,手有余香

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

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

打赏作者

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

抵扣说明:

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

余额充值