依赖管理包介绍

文章目录

  • 1. 概念介绍
  • 2. 思路与方法
    • 2.1 实现思路
    • 2.2 相关组件
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"使用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进行状态管理"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/845992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言:如何在微软VS环境下使用C库?

技术答疑流程 扫描二维码&#xff0c;添加个人微信&#xff1b;支付一半费用&#xff0c;获取答案&#xff1b;如果满意&#xff0c;则支付另一半费用&#xff1b; 知识点费用&#xff1a;10元 项目费用&#xff1a;如果有项目任务外包需求&#xff0c;可以微信私聊

IP路由策略1

控制层面:路由协议传递路由信息的流量--对应的方向 数据层面:设备间具体访问时请求的流量--对应方向 控制层面方向与数据层面方向一定相反 在控制层面流量进或出的接口上&#xff0c;抓取流量后&#xff0c;修改其中参数或删除该信息&#xff0c;最终起到影响路由器路由表的生…

「Django秘境探险:揭开Web开发的神秘面纱」

大家好&#xff0c;我是阿佑&#xff0c;今天将和大家一块学习到如何利用Django框架的高级特性&#xff0c;构建出既快速又安全的Web应用。我们将一起破解Django的内部机制&#xff0c;掌握从数据模型到模板设计的每一个环节。准备好了吗&#xff1f;Let’s go &#xff01; 文…

“手撕”链表的九道OJ习题

目录 1. 第一题 2. 第二题 3. 第三题 4. 第四题 5. 第五题 6. 第六题 7. 第七题 8. 第八题 9. 第九题 1. 第一题 删除链表中等于给定值 val 的所有节点。OJ链接 思路如下&#xff1a; 相当于链表的removeAll();制定prev和cur&#xff0c;prev记录前一个节点&#xff…

Windows11 wsl2编译Android14 使用ASfP Debug windows上启动的模拟器

wsl2的安装和配置 安装&#xff1a; 直接百度搜索最新的wsl2安装教程即可&#xff0c;官网&#xff1a;https://learn.microsoft.com/zh-cn/windows/wsl/install 1. 启用适用于 Linux 的 Windows 子系统(以管理员身份打开 PowerShell 并运行) Enable-WindowsOptionalFeature…

8-Django项目--登录及权限

目录 templates/login/login.html templates/login/404.html views/login.py utils/pwd_data.py auth.py settings.py 登录及权限 登录 views.py 中间件 auth.py templates/login/login.html {% load static %} <!DOCTYPE html> <html lang"en"&g…

Linux系统编程——动静态库

目录 一&#xff0c;关于动静态库 1.1 什么是库&#xff1f; 1.2 认识动静态库 1.3 动静态库特征 二&#xff0c;静态库 2.1 制作静态库 2.2 使用静态库 三&#xff0c;动态库 3.1 制作动态库 3.2 使用动态库一些问题 3.3 正确使用动态库三种方法 3.3.1 方法一&…

什么是BFC?

1、BFC&#xff1a;又叫块级格式化上下文&#xff08;block formatting context&#xff09;&#xff0c;就是页面上一个隔离的独立容器&#xff0c;容器里面的子元素不会影响到外面的元素。 2、BFC的原则&#xff1a;如果一个元素具有BFC&#xff0c;那么内部元素再怎么弄&am…

QuillEditor富文本结合vue3使用,可单独抽离成组件,富文本的内容可自定义

实现效果&#xff1a; 上方的粗体、斜体、字号、字体等各种信息支持自定义配置。 实现方式&#xff1a; 下面的介绍为分步骤的详细介绍&#xff0c;完整版纯享代码可参考这篇博客富文本QuillEditorvue3组件代码纯享版-CSDN博客 1.新建一个新文件--子组件&#xff0c;如命名为…

git应用最佳实践

插&#xff1a; AI时代&#xff0c;程序员或多或少要了解些人工智能&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家(前言 – 人工智能教程 ) 坚持不懈&#xff0c;越努力越幸运&#xff0c;大家…

QGraphicsView实现简易地图19『迁徙图』

模仿echarts的迁徙图效果 用到了前2篇制作的散点(涟漪效果)和两年前的路径动画类&#xff1b;然尾迹效果未依附路径&#xff0c;有待优化。 动态演示效果 静态展示图片 核心代码 #pragma once #include "Item/AbstractGeoItem.h" #include "DataStruct/GeoD…

php之文件操作代码审计

1 PHP文件操作函数 1.1 PHP文件操作函数 文件包含 include/require/include_once/require_once 文件读取 file_get_contents/fread/readfile/file 文件写入 file_put_contents/fwrite/mkdir/fputs 文件删除 unlink/rmdir 文件上传 move_uploaded_file/copy/rename 1.2 文…

IO流(1)

定义&#xff1a;存取和读取数据的解决方案 作用&#xff1a;用于读写数据&#xff08;本地文件、网络&#xff09; 分类&#xff1a; 一种是&#xff1a;输出流和输入流。 一种是&#xff1a;字节流和字符流。 字节流 字节流——FileOutputStream&#xff08;字节输出流&…

(函数)判断一句话中最长的单词(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//声明函数&#xff1b; int aiphabetic(char); int longest(char[]);int main() {//初始化变量值&#xff1b;int i;char line[100] { 0 };//获取用户输入字符…

Gradle命令打包 Execution failed for task ‘:app:compileDebugJavaWithJavac错误

Gradle命令打包的时候遇到的&#xff0c;Gradle的java版本不对导致的&#xff0c;用的17&#xff0c;换成11的就能正常打包了。

大模型管理工具Ollama搭建及整合springboot

目录 一、Ollama介绍 1.1 什么是Ollama 1.2 Ollama特点与优势 二、Ollama本地部署 2.1 版本选择 2.2 下载安装包 2.3 执行安装 2.4 Ollama常用命令 三、使用Ollama部署千问大模型 3.1 千问大模型介绍 3.2 部署过程 四、springboot接入Ollama 4.1 引入Ollama依赖 4…

树莓派LCD显示屏安装驱动详细教程

使用LCD显示屏有两种方式&#xff0c;1.如果你已安装好树莓派官方系统&#xff0c;需要单独安装驱动才可点亮显示屏。 2. 也可以直接烧录我们提供的系统 里面已含驱动程序。 一&#xff1a;连接方式 按照下图方式连接好LCD显示屏与树莓派主板 二&#xff1a;安装系统镜像&…

6个适合在家做的副业兼职,做得好的月入过万,适合上班族和宝妈

嘿&#xff0c;亲爱的朋友们&#xff01;是不是常常觉得钱包瘪瘪&#xff0c;却又因为种种原因无法外出兼职&#xff1f; 别急&#xff0c;我来为大家揭秘几个在家也能轻松赚钱的靠谱副业&#xff0c;让你足不出户也能月入过万&#xff0c;从此告别财务烦恼&#xff01; 副业一…

1.5.3 基于Java配置方式使用Spring MVC

本实战教程主要介绍了如何使用Java配置方式来使用Spring MVC框架。相较于XML配置方式&#xff0c;Java配置方式提供了一种更为简洁和灵活的配置方法。 项目创建与配置 创建一个Jakarta EE项目&#xff0c;并设置项目名称和位置。选择Jakarta EE 10版本&#xff0c;不添加依赖&a…

404.左叶子之和

计算给定二叉树的所有左叶子之和。 示例&#xff1a; 思路&#xff1a; 通过父节点来判断七子节点是不是我们要收集的元素。因为如果遍历到孩子节点&#xff0c;我们无法判断它是左孩子还是右孩子。 后序遍历&#xff0c;左右中。 判断当前节点是不是左叶子是无法判断的&…