首页
学习
活动
专区
圈层
工具
发布

Flutter 系列之GetX的学习(1) --> 状态管理

GetX 中的状态管理几乎不需要样板代码即可实现。 路线管理: GetX 提供了用于在 Flutter 应用程序内导航的 API。此 API 非常简单,所需代码较少。...状态(State) :在 CounterController 中,状态由私有变量 _x 表示。 读取状态:通过 x 这个 getter 公开了 _x 的值,允许外部读取。...中使用响应式变量 Obx 概念 Obx 是 GetX 中用于实现响应式 UI 的小部件。...它的主要作用是监听可观察变量(如 .obs 创建的变量)的变化,并在变化时自动更新其子树。 工作原理 可观察变量:通过将变量定义为 .obs,GetX 会将其转化为可观察对象。...总结 只更新需要的小部件。 不使用changeNotifier,状态管理器使用较少的内存(接近0mb)。 忘掉StatefulWidget! 使用Get你永远不会需要它。

91310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    记住,永远都不要在 Flutter 中使用全局变量

    Flutter 中使用全局变量的缺点 在 Flutter 中使用全局变量一直受到质疑和批评,通常被认为是不好的做法。以下是使用全局变量的缺点: 1....如果你想有效地使用封装,你必须禁止全局变量。 由于全局变量创建了“面条”代码,因此需要大量的规范来约束它们。但是,有些开发人员会使用全局变量,因为他们在一个小团队中,并且在某些情况下不利于更改。...以下是可用于管理状态的状态包管理器和库的列表: 1. Provider 状态管理包 Provider 状态管理器包被广泛用于收集小部件状态数据并在状态更改时更新小部件。...使用提供程序时,只有受影响的小部件会在数据发生突变时被更新。与随处变化的全局变量相比,Provider 降低了复杂性。 Provider 从小部件收集数据并监听小部件周围发生的数据变化。...要在 Flutter 应用程序启动中开始使用 GetX,请将 get 添加到你的 pubspec.yaml 文件中: dependencies: get: 接下来,导入使用 GetX 库函数和组件时需要的

    4.9K30

    在 Flutter 使用 GetX 对话框

    应用程序使用 GetX 创建一个对话框 在 Flutter 使用 GetX 对话框 是移动应用程序的基本组成部分。...在本文中,我们将探索在 Flutter 使用 GetX 的对话框。我们还将实现一个演示程序,并了解如何使用您的 Flutter 应用程序的获取包创建对话框。...如果我们也利用内容,那么内容小部件数据将被播种。 > barrierDismissible: 如果我们想通过单击对话框外部来关闭对话框,那么这个属性的值应该为 true else false。...这是我对使用 GetX 进行用户交互的对话框的一个小小介绍,它正在使用 Flutter 工作。 我希望这个博客将提供您充分的信息,尝试在您的 Flutter 项目使用 GetX 对话框。...使用 GetX 插件制作一个工作对话框的演示程序。在本博客中,我们已经研究了 flutter 应用程序的使用 GetX 的对话框。我希望这个博客能帮助你更好地理解这个对话框。所以请尝试一下。----

    1.1K10

    Flutter中值得收藏的几个包

    在一些项目里,你无法避免使用一些好的第三方包,以便您可以专注于应用程序的核心逻辑。 那么我今天就给大家推荐九个。...坚果 华为云享专家,InfoQ签约作者,OpenHarmony布道师,,华为云享专家,阿里云专家博主,51CTO博客首席体验官,开源项目GVA成员之一,专注于大前端技术的分享,包括Flutter,鸿蒙,小程序...您可以通过管理其顶级状态以在适当的时间向用户显示该小部件,从而在您的应用程序中以任何您想要的方式实现此小部件。 特征 : 轻松添加页面。 圆形页面显示。 很nice的动画。...性能:GetX 专注于性能和最小的资源消耗。GetX 不使用 Streams 或 ChangeNotifier。 生产力:GetX 使用简单而愉快的语法。...对于 GetX,这不是必需的,因为默认情况下不使用资源时会从内存中删除它们。如果你想把它保存在内存中,你必须在你的依赖中明确声明“permanent: true”。

    1.8K31

    flutter中对列表的性能优化

    嵌套列表 - ShrinkWrap 与 Slivers 使用 ShrinkWrap 的列表列表 下面是一些使用ListView对象呈现列表列表的代码,内部列表的shrinkWrap值设置为 true。...shrinkWrap: true, ), ... ], ) “注意:观察外部ListView没有将其shrinkWrap 值设置为true。...而且你滑动的快的时候列表会抖动! 重新构建嵌套列表 要了解如何使您的用户免受卡顿威胁,请等待我的第二节,下一节将使用 Slivers 而不是 ListViews 重建相同的 UI。...使用 Slivers 的列表列表 下面的代码构建了与之前相同的 UI,但这次它使用Slivers 而不是收缩包装ListView对象。本页的其余部分将引导您逐步完成更改。...更好的是,一直滚动到下一个列表也不会产生任何特殊费用。 Flutter 会根据需要重新构建小部件,而且很快。

    4.8K00

    View的滑动冲突的分析和处理实践

    外部滑动方向和内部滑动方向一致 以上两种情况嵌套 如图: 第一个场景 外部滑动方向和内部滑动方向不一致,目前主要出现在: 主页 ViewPager 和 Fragment 配合使用组成的页面滑动效果...就像现在的 “手机QQ” Android端 的消息栏目, 有上下滑动的消息列表,每一条消息又能左滑删除,消息列表右滑又能拉出用户菜单。...对于上面的场景一:外部滑动方向和内部滑动方向不一致,我么只需在左右滑动时让外部的View上拦截点击事件,当用户上下滑动时,则让内部View拦截处理。...---- 外部拦截法 我们首先通过外部拦截法来解决这个问题,重写 HorizontalScrollerView 的 onInterceptTouchEvent 方法,在滑动的时候,如果水平滑动的距离大于竖直滑动的距离就拦截事件...然后我们在 HomeActivity 中把他添加到原有列表的第一格,这里禁用掉里面子View的事件处理便于测试。

    76640

    写个A星寻路算法,主程也不一定能写出来!!!

    假设现在我们在某一格子,邻近有4个格子可走,当我们往上、下、左、右这4个格子走时,我们假设移动的代价是1,则当前节点的G值为上一个节点的G值 加上单位移动的代价(这里使用1) H值是如何预估出来的?...0)的星星表示起点, (0,5)的星星表示目标点 1、在(0,0)的时候 G = 0,H = (0-0) + 5-0 = 5 2、将(0,0)的可行走节点加入到待访问 节点列表, (0,1)的消耗为 G...,并计算出所有的消耗 4、依次循环,直到发现结束点已经在待访问节点列表,代表已经有节点可以连接到结束点 5、从结束反向追溯就可以找到来时的路径 3、show you code 先看下节点的定义 package...3、现在输出节点是倒序的,可以使用List,倒序输出 4、可以将地图增加八个方向的移动,修改dir数组即可,即增加 左上,左下,右上,右下四个方向 6、游戏应用: 在游戏中应用的方式,一般是使用地图编辑器...,将地图划分为格子,然后由策划进行刷点,通过不同的刷子表示不同的状态,最后导出地图的导航网格数据,服务端在游戏启动的时候只加载网格数据,直接使用导航网格数据进行计算路径,客户端也可以自己寻路。

    1.8K20

    从PEP-8学习Python编码风格

    关于原文件编码 Python3中应当总是使用UTF-8。(Python2使用ASCII。)在使用了规定编码后不需要再声明文件编码。...mixedCase只有在考虑兼容性的时候才使用。 类方法的第一个参数总是cls,实例方法的第一个参数总是self。 变量命名同函数和方法。如果名字与保留字有冲突,在最后加_。...私有变量和方法在最前加_,此时外部无法访问,但子类可以访问。 如果也不希望子类访问,可以以__开头。此时无法用ClassName.__var访问 。(但仍然可以通过ClassName....可以使用__all__列表指定公开的接口。它会覆盖上一条规则。 关于Python中的下划线 Python中的下划线用法有这么几种: a_:避免名字与保留字等的冲突。 _a:表示私有。...关于getter(accessor)和setter(mutator) Python中不推荐使用类似于Java中的getX和setX。相反,应当直接对变量进行操作。

    62210

    Qt ListView 配合Model 显示文件与删除文件

    表格、列表和树型窗口部件是 GUI 开发中经常会用到的窗口部件。这些窗口部件有两种不同的方式来获取数据。传统的方式是窗口部件本身包含用于存储数据的内置容器。...这种方式非常符合直观感受,然而,在许多复杂的应用中,这将导致数据的同步问题。第二种方式是模型/视图编程,窗口部件无需维护内部的数据容器。它们通过标准的接口获取外部数据,也因此避免了数据的重复。...这在一开始可能会显得复杂,然而一旦你更仔细地观察之后,它不但很容易理解,而且它所具有的很多优点也会逐渐变得清晰明了。...此类用于提供先前由QListBox和QIconView类提供的列表和图标视图。目前我比较常用的是和Qt 的Model一起使用。 体系的搭建需要大量的基础知识铺垫,并且要不断总结。...使用QFile来删除文件。 程序运行结果: ①执行结果界面 ? ②刷新按钮结果 ? ③删除文件询问 ? ④删除文件结果 ? 刚开始使用 model/view,有不妥的地方望大家见谅。

    3.5K50

    【源码篇】Flutter GetX深度剖析 | 我们终将走出自己的路(万字图文)

    基于Java的注解功能,在私有变量前加“@Autowired”等注解,不需要显式的定义以上三种代码,便可以让外部容器传入对应的对象。...[GetX依赖注入-前] 引入GetX这个中间层来管理 看下图,瞬间就想到了中介者模式 这也是控制反转的思想(创建对象的控制权本来在自己手上,现在交给了第三方) [GetX依赖注入-后] Put 来看下...GetX注入的操作 put使用 var controller = Get.put(XxxGetxController()); 看看内部操作 哎,各种骚操作 主要逻辑在Inst中,Inst是GetInterface...,GetXController实例无法回收的问题(不使用Getx路由) 我兴致冲冲的打开Getx项目,准备提PR,然后发现GetBuilder已经在dispose里面写了回收实例的操作 淦!...,Getx中是在路由里面去回收这些实例的,但是,如果你没使用GetX的路由,又用Obx,你会发现,GetXController居然无法自动回收!!!

    5.4K53

    Java对象竟然会在栈上分配内存?

    分析对象的动态作用域,当某对象在方法里被定义后,它可能 方法逃逸 被外部方法引用,例如作为参数传递给其他方法 线程逃逸 被外部线程访问,例如赋值给可以在其他线程中访问的实例变量 所以 Java 对象由低到高的逃逸程度即为...在一般应用中,完全不会逃逸的局部对象和不会逃逸出线程的对象所占比例很大,若能使用栈上分配,则大量对象就会随方法结束而自动销毁,GC系统压力会下降很多。 栈上分配可支持方法逃逸,但不能支持线程逃逸。...假如逃逸分析能证明一个对象不会被方法外部访问,并且该对象可被分解,那么程序真正执行时将可能不去创建该对象,而改为直接创建它的若干个被这方法使用的成员变量。...优化step1:内联构造器和getX()方法 ?...数据流分析,发现py的值其实对方法不会造成任何影响,那就可以放心地去做无效代码消除得到最终优化结果,如下所示: public int test(int x) { return x + 2; } 观察测试结果

    85720

    MVC架构在Asp.net中的应用和实现

    在模型状态的影响下,控制器使用特定的方法接受和解释这些事件。控制器的初始化建立起与模型和视图的联系,(这里一般会用观察者模式)并且启动事件处理机制。事件处理机制的具体实现方法依赖于界面的工作平台。...该框架中并没有使用观察者模式,因为依赖关系(本项目中只有两种视图,列表页面和编辑、查看详情页面。而且将来增加视图的可能性也不大)固定或者几乎固定时,加入一个观察者模式,只会增加系统复杂性。...使用多个包含单页面显示的用户部件,复杂的Web页面可以展示来自多个数据源的内容,并且网页人员,美工能独自参与这些Web页面的开发和维护。在Asp.net下,视图的实现很简单。...使用由用户部件根据模板配置组成的组合页面,它增强了可重用性,并简化了站点的布局。在.Asp.net2.0中,可以使用MasterPage来简化视图设计。...在本项目中,每个模块的View,实际上都只有两种,一种是用来显示多条数据的列表页面,一种是用来编辑、和查看详情的页面。由于View种类几乎是固定的,所以不需要加入Observer(观察者)模式。

    5.7K20

    Flutter快速开发——列表分页加载封装

    ,通过示例代码可以看出,在使用封装后的列表分页加载功能时只需要关注数据请求本身和界面布局展示,而无需关注分页的具体细节,使列表分页加载的实现变得更简单。...pull_to_refresh[1]: 下拉刷新、下拉加载更多 • GetX[2]: 依赖管理、状态管理 列表分页加载封装中 GetX 主要使用到了依赖管理和状态管理,当然 GetX 除了依赖管理还有很多其他功能...,因本篇文章主要介绍列表分页的封装,不会过多介绍 GetX,关于 GetX 更多使用及介绍可参考以下文章: • Flutter之GetX集成及使用详解 • Flutter 通过源码一步一步剖析 Getx...依赖管理的实现 • Flutter之GetX依赖注入使用详解 • Flutter之GetX依赖注入tag使用详解 具体实现 前面介绍了对于列表分页加载的封装整体分为三层:State、Controller...refreshId 刷新列表界面的 id,用于后面 Controller 刷新指定 Widget 使用,属于 GetX 状态管理的功能,具体可详阅 GetX 相关文章。

    7.1K32

    泛型的引出(重点)

    类之中如果要想保存以上的数据,一定需要定义x和y两个属性,而这两个属性可以接收三种数据类型,那么只能使用Object类来定义会比较合适,这样会发生如下的几种转换关系: · 整数:int  自动装箱为...Object接收,从技术上而言,本操作没有问题,但是从实际来讲,数据是有错误的,因为没有统一,所以在取得数据并且执行向下转型的过程之中就会出现如下的错误提示信息: Exception in thread...泛型:类之中操作的属性或方法的参数的类型不在定义的时候声明,而是在使用的时候动态设置。...getY() { return y; } } class Point{ // 此处可以随便写标识符号,T是type的简称 private T var ; // var的类型由T指定,即:由外部指定...public T getVar(){ // 返回值的类型由外部决定 return var ; } public void setVar(T var){ // 设置的类型也由外部决定 this.var

    49400

    Android技能树 — View事件体系小结

    Android技能树 — Android存储路径及IO操作小结 Android技能树 — 多进程相关小结 Android技能树 — Drawable小结 数据结构基础知识 Android技能树 — 数组,链表,散列表基础小结...(桌面的一些小的清理垃圾的悬浮窗的操作差不多,明白了吧) 具体实现可以看我以前写过的文章,十分简单: 小Demo大知识-控制Button移动来学Android坐标 ?...所以区别是: View的getX/Y()是指自己View的左上角相对于父View左上角的距离。MotionEvent的getX/Y()是指点击处离自己View的左上角的距离。...我们就以最简单的外部左右滑动,内部上下滑动为例子。 ? 外部左右滑动,内部上下滑动 比如我们规定,滑动的角度是N度以内的时候就是说明我们在内部滑动,角度是N度以外的时候是外部滑动。...外部拦截法 默认父元素拦截,然后再适合的条件下,不让父元素拦截。

    50310
    领券