首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flutter 状态管理之GetX库

Flutter 状态管理之GetX 前言 正文 一、创建项目 二、状态组件 三、状态更新UI 四、GetX库 ① 添加依赖 ② 局部刷新 ③ 全局刷新 五、源码 前言   Flutter使用是声明式UI...使用 StatefulWidget:当小部件外观和内容需要根据用户交互、数据变化或其他条件动态更新时,需要使用 StatefulWidget,例如表单、列表视图等。   ...在按钮点击事件我们打印一下日志,下面我们重新运行一下。 点击按钮,看控制台。...test.toUpperCase() : test.toLowerCase())这行代码,初始情况下显示为小写,然后我们点击按钮调用changeText()函数,函数更改isUppercase 值...安装成功你可以控制台看到,如下图所示: GetX安装成功,同时我们知道最新版本是4.6.6。

5600

Excel实战技巧55: 包含重复值列表查找指定数据最后出现数据

例如,可以查到张无忌最近是2019年9月9日值班,因此下一天值班就不会安排张无忌了。现在就是要求给出张无忌,获得他最近值班日期2019年9月9日,对于其他员工也是这样。 ?...A2:A10值,如果相同返回TRUE,不相同则返回FALSE,得到一个由TRUE和FALSE组成数组,然后与A2:A10所行号组成数组相乘,得到一个由行号和0组成数组,MAX函数获取这个数组最大值...,也就是与单元格D2值相同数据A2:A10最后一个位置,减去1是因为查找是B2:B10值,是从第2行开始,得到要查找B2:B10位置,然后INDEX函数获取相应值。...之所以使用SUMPRODUCT函数,是因为该函数可以处理数组公式,而无须在公式输入完成按Ctrl+Shift+Enter组合键。 结果如下图2所示。 ?...组成数组,由于这个数组找不到2,LOOKUP函数在数组中一直查找,直至最后一个比2小最大值,也就是数组最后一个1,返回B2:B10对应值,也就是要查找数据列表中最后值。

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

Flutter实现文件上传华为对象存储(OBS)

本文主要讲述 Flutter 项目中如何实现将文件上传到华为 OBS(对象存储),并封装为三方库方便灵活使用。...Flutter 实现将文件上传到华为云 OBS ,而华为云 OBS 并没有提供 Flutter SDK,所以就需要自己实现,首先看一下实现以后代码使用效果。...public-read 设在桶上,所有人可以获取该桶内对象列表、桶内多段任务、桶数据、桶多版本。...public-read-delivered 设在桶上,所有人可以获取该桶内对象列表、桶内多段任务、桶数据、桶多版本,可以获取该桶内对象内容和元数据。不能应用在对象上。...创建 OBSResponse 首先创建一个 OBSResponse 实体,用于上传 OBS 返回结果,代码如下: class OBSResponse{ String?

2.1K10

Flutter 刷新页面:通过下拉刷新提升用户体验

丰富挂件Flutter 提供了一个很好方式实现下拉来刷新应用。这个手势,对很多用户来说很熟悉,就是下拉页面来触发更新动作,获取新数据并更新屏幕展示。...Flutter 响应式框架能够在数据更改时,更新应用程序用户界面。 下拉刷新管理数据 为了有效联合下拉刷新来管理状态,我们可以众多 Flutter 生态中选择其中一种。...它可以从父挂件获取数据,管理状态并在页面之间导航。当实现下拉刷新,我们经常需要 BuildContext 来触发状态更改或者刷新导航到不同屏幕。...为了充分利用热加载,请使用模块化构建代码,不同函数或者中分离获取刷新数据逻辑和更新 UI。这会让我们独立更改和测试小块代码,降低引入错误风险并加快开发过程。...复杂 Flutter 应用程序拉动刷新 更复杂 Flutter 应用程序,下拉刷新可能和多个状态层和数据源有交互。在这种场景,实现一个能够处理复杂性有强大状态管理解决方案至关重要。

12610

Flutter之GetX集成及使用详解

Flutter 应用开发过程,状态管理、路由管理应用框架扮演着重要角色。目前主流解决方案有 Google 官方 Provider,三方 GetX、Bloc、 fish-redux 等。...0.GetX 集成 添加依赖 pubspec.yaml 文件添加 GetX 依赖,如下: dependencies: flutter: sdk: flutter get: ^4.5.1...界面上使用响应式变量只需使用变量控件上包裹 Obx 即可实现响应式更新,即变量值发生变化时自动刷新界面: Obx(() => Text("${count.value}")) 数据变化监听 除了使用...Obx 实现界面数据自动刷新外,GetX 提供了多种手动方式对响应式变量进行数据变化监听,当数据发生变化时执行自定义逻辑,比如数据变更重新请求接口等。...GetBuilder 进行包裹,这样使用 Controller 数据变化时,调用 update() 就会刷新界面控件。

9.4K43

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

可以发现,_updaters泛型就是一个方法 GetBuilder添加监听就是一个方法参数,方法体里面就是 setState() 齐活了!...[GetBuilder刷新机制] Obx刷新机制 这套刷新机制,和我们常用状态管理框架(provider,bloc)以及上面的GetBuilder,使用上有一些区别 变量上:基础类型,实体以及列表之类数据类型...,作者都封装了一套Rx类型,快捷在数据obs 例如:RxString msg = "test".obs(var msg = "test".obs) 更新上:基础类型直接更新数据就行,实体需要以..._notifyData 方法 _notifyData 方法,会遍历 _onData 列表,根据条件会执行其泛型 _data 方法 我猜,_data 方法体,十有八九某个地方肯定添加了 setState...() ,最终添加 _onData 该列表变量 瞟一眼 _notifyData方法,是不是遍历执行了 _onData 列表item方法( item.

3.5K31

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

App 列表数据加载是一个很常见功能,几乎大多数 App 中都存在列表数据展示,而对于大数据列表展示,为提高用户体验、减少服务器压力等,一般采用分页加载列表数据,首次只加载一页数据,当用户向下滑动列表到底部时再触发加载下一页数据...为方便开发过程快速实现列表分页功能,对列表分页加载统一封装是必不可少,这样开发过程只需关注实际业务逻辑而不用在分页数据加载处理上花费过多时间,从而节省开发工作量、提高开发效率。...,通过示例代码可以看出,使用封装列表分页加载功能时只需要关注数据请求本身和界面布局展示,而无需关注分页具体细节,使列表分页加载实现变得更简单。...实现功能 封装列表分页加载实现功能主要如下: • 列表数据显示 • 下拉刷新 • 上拉加载 • 自动判断是否还有更多数据 • 自动处理分页逻辑 • 列表 item 点击事件封装 使用到第三方库 •...关于 json 数据解析可参考前面写Flutter应用框架搭建(三)Json数据解析[9] 数据加载完成,判断数据是否为空,不为空则将数据添加到 data 集合,并且分页页数加 1。

6K31

Flutter 120hz 高刷新 Android 和 iOS 上调研总结

如果应用程序需要设置帧速率,那首先需要通过 getSupportedModes() 获取目前屏幕支持模式列表,然后遍历列表,根据找到想要使用分辨率和刷新 modeId,赋值给窗口preferredDisplayModeId...而在 #78117 讨论最终讨论结果就是:Flutter 并不会特别针对这部分厂商去特意做适配,如果需要,你可以通过第三方插件来解决,当然测试,目前大部分设备刷新率支持上还是正常。...同时早期 Flutter IntelliJ 插件也存在 bug ,即使应用程序以 90 fps 运行,Android Studio / IntelliJ Flutter 插件也会给出 60...,对于这些刷新变化 App 而无需进行任何更改: UIKit SwiftUI SpriteKit CAAnimation 但是对于 Flutter 而言并没用使用系统所提供原生控件,所以目前需要在...1/2; 其实在之前讨论还有如 #29692 这种更灵活实现,也就是探索让 Flutter Engine 根据渲染和使用场景去自己选择当前帧率,因为社区认为:对于普通用户来说,不知道平台、性能等情况下让开发者自己选择正确刷新并不靠谱

2.3K30

干货 | 携程火车票Flutter最佳实践

我们根Widget继承了InheritedWidget,然后该组件存放一个数据data,那么可以在任意子Widget来获取该组件数据并使用。...2)控制刷新范围与次数 尽量避免滑动监听触发setStat()刷新视图。 ? 如上图所示,需要滑动过程,显示、隐藏标题栏,并且是一个渐变过程,遇到这种情况,一定要尽量控制刷新范围和频次。...如上图所示列表 Item 存在大量倒计时。一定要控制刷新倒计时只影响控件本身,并且只有可视区域视图是刷新,不可见情况下及时销毁计时器。一直刷整个列表,性能开销是恐怖。...4.2 Flutter 数据预加载 为了缩短用户加载等待时长,我们经常需要一些预加载方法。比如在前一个页面预加载下一个页面的数据,或者列表分页请求时候,可以做分页预加载。...///请求列表数据数据 void loadListData(HotelQuery query) { ///首页提前获取列表数据并缓存到本地,当用户进入列表页时可以直接展示数据 if (resultModel

2.1K30

牛赞:音视频前端跨平台技术应用

上段提到了Flutter通信和原生通信仅支持基本数据类型,这会带来以下几点挑战: 如何实现复杂结构体传输? 图片如何高效Flutter和原生SDK之间传输?...通信层收到数据后进行反序列化,转为对应JAVA结构体即可传输给原生SDK。 结构体可以对参数进行约束、类型校验、便于开发者早期发现问题,提升易用性。...优化视频列表,GPU占用从72%下降到50%左右,视频画面能够正常渲染显示。 第一阶段优化结束,我们没有就此止步。...,转为图像纹理数据SurfaceTexture(Flutter提供画板)上进行绘制,最终Flutter根据画板数据渲染出完整视频。...日常企业直播OBS已经成为了企业直播标配。

2.6K10

革命性web前端框架Flutter详细介绍和学习路径

所以它采用开发语言不是JS,而Dart(Dart是面向对象定义、单继承语言。... ReactNative ,引入了虚拟 DOM 来减少DOM回流和重绘,系统将虚拟 DOM 与真正 DOM 进行比较,生成一组最小更改,然后执行这些更改,以更新真正 DOM。... Flutter ,UI 组件和渲染器已经从平台中集成到用户应用程序。没有系统 UI 组件可以操作,所以原来虚拟控件树地方现在是真实控件树。...Flutter优势 运行效率上,Flutter和ReactNative都可以达到理论上60帧刷新率,来实现「Native般流畅体验」,Flutter是全Native执行,基于底层代码(Android...基于ListView实现水平和垂直方式滚动列表 基于ExpansionTile实现可展开列表 基于GridView实现网格列表 高级功能列表下拉刷新与上拉加载更多功能实现 Flutter进阶提升

3.7K40

Flutter 多语言、主题切换之GetX库

五、切换语言 ① my_home.dart   现在为了是我们切换语言生效,我们之前直接使用字符串地方,现在就需要更改为Local键了,首先我们修改一下my_home.dart代码,如下图所示...; } } changeLanguage()函数,保存切换语言下标,然后更新语言配置。...主要内容就是一个列表,用于点击Item切换语言项,切换之后返回上一个页面,同时传值过去, ⑥ mine.dart 最后我们改动一下mine.dart,如下所示: import 'package:flutter...② 更改主题   然后settings下创建对应更换主题页面,首先我们创建一个theme_setting_controller.dart,里面代码如下所示: import 'package:flutter...,区别就是我将所有的背景颜色都去掉了,这样才能时候切换效果切换,之前用到背景颜色地方你都需要更改一下,最后我们修改一下mine_controller.dart和mine.dart代码,先是mine_controller.dart

7500

flutter 起步

继承(extends)Flutter继承和Java继承是一样Flutter继承是单继承构造函数不能继承子类重写超方法,要用@override子类调用超方法,要用superFlutter...AlertDialog:一个弹框组件flutter问题:Flutter通过将新代码注入到正在运行DartVM,来实现Hot Reload这种神奇效果,DartVM将程序结构更新完成,...但是热刷新也有一些限制,并不是所有的代码改动都可以通过热刷新来更新:编译错误,如果修改Dart代码无法通过编译,Flutter会在控制台报错,这时需要修改对应代码。...全局变量和静态成员变量,这些变量不会在热刷新时更新。修改了main函数创建根控件节点,Flutter刷新只会根据原来根节点重新创建控件树,不会修改根节点。...某个从普通类型转换成枚举类型,或者类型泛型参数列表变化,都会使热刷新失败。

4.4K20

Android开发者Flutter入门(二)

自定义布局 我们都知道,Android,如果系统提供布局控件不能满足我们需求,我们会自定义布局控件来实现。Flutter同样也提供自定义布局控件功能。...这也是Flutter一个比较有意思地方,很多在Android我们当做属性来用东西,Flutter都会做成一个来包裹,这也是造成UI代码比较难看一个原因。..._onRefesh里实现刷新数据逻辑,需要注意是函数_onRefresh需要返回Null类型Future。在这个Future complete之后。刷新图标会自己消失。效果如图: ?...下拉刷新 上拉加载更多 Flutter没有系统提供加载更过控件,这里我们想办法做一个比较粗糙实现。思路是列表末尾添加一个加载控件,当滑动到列表底部时候触发加载操作。...路由(页面跳转) Android我们都是用startActivity或者第三方路由库来做页面跳转,Flutter,使用内置Navigator来做跳转

1.3K20

Android开发者Flutter入门(一)

Android我们可以用Gson来把json数据反序列化为对象。那再Flutter如何来做反序列化呢?...: ^0.8.0 json_serializable: ^0.5.0 然后终端运行flutter packages get(或者点击"Packages Get"提示,类似你更改.gradle文件以后...至此model以及反序列化我们就已经做完了,那么下面就看看网络请求怎么来实现。 网络请求 对应于AndroidOkHttp, Flutter网络请求库是http.dart。...反之有状态则是指这个Widget显示期间内状态会发生改变,就比如我们在做网络请求时候会显示一个Progress图标,请求回来数据以后会显示一个列表。这就是状态发生了变化。...这里顺便说一句,一个.dart文件是可以包含多个最外层,这点和Java是不一样,需要习惯一下。 接下来我们再实现自定义Widget: HeadLineList。

3.2K10

干货 | 携程酒店Flutter性能优化实践

开发过程,也遇到了一些性能相关问题和用户反馈,比如长列表滚动卡顿、页面打开时间较长、页面打开后部分数据加载时间较长等问题。...预加载数据有三种常见方法,第二个页面的数据第一个页面的服务结果获得;第二个页面的数据客户端其它页面预先获得并缓存;第二个页面的服务请求在打开页面之前发送。...中加上: protobuf: ^2.0.1 编写如下测试代码: 图14 使用契约样例代码 执行可以得到如下结果: 图15 执行结果 其中,生成Person继承了Protobuf包里GeneratedMessage...监控方面Flutter现在比较通用方法就是利用Expando弱引用去监控我们要检查是否有泄漏对象,如果出现则从VM获取其引用链接,从而分析其泄漏原因。...我们框架也利用此方法监控了我们app每个页面是否退出时还存在泄漏。 另外通过FlutterDev tool内存监控工具也能实现对泄漏对象发现。

1.9K10

Flutter 专题】图解 ListView 下拉刷新与上拉加载 (一)

和尚上次学 ListView 时,只学习了一下异步请求数据加载新闻和 Loading 等待小知识点,但对于新闻列表数据更新和加载更多是必不可少,而实现【下拉刷新】与【上划加载更多】方式有很多种...,今天和尚整理一下使用三方库 flutter_refresh 来实现列表数据更新。...集成方式 pubspec.yaml 添加 flutter_refresh : ^0.0.2,并同步 packages get; 相应 .dart 文件添加引用 import 'package:...问题小结 和尚在测试过程遇到了很多小问题,现在逐一整理一下。 问题一:初始化进入页面,加载完第一页之后刷新数据不加载,第二次刷新数据才加载,且加载是上一次刷新数据?...问题二:下拉刷新过程,接口数据重复加载? 解决方式: 和尚目前还没有涉及缓存等方面的,单纯一个下拉刷新应该是重新调用初始接口,首先要清空列表,不然接口数据重复实实在在会出现

1.6K31

Flutter 动画组件那么多,记不住不会用怎么办?我都给你整理好了,收藏吧!

前言 Flutter 自带基础动画组件称之为隐式动画组件,小小统计了一下,会有几十个那么多,包括通用动画构建、特定动画效果类以及封装好动画组件。...AnimatedWidget AnimatedWidget 是一个抽象,可以通过 Animation 对象值动态刷新每一帧从而实现动画效果。...我们 Flutter 入门与实战(九十三):使用 Animation 构建爱心三连动画 使用了 Animation 构建了爱心尺寸变化动画。...我们 还在用 ListView?使用 AnimatedList 让列表元素动起来中介绍了如何使用 AnimatedList。 整个实现来说还是有点复杂,推荐列表元素不多时候使用。...这个就很好理解了,动画过程更改组件透明度。我们Flutter 入门与实战(九十五):小姐姐渐现效果 —— AnimatedOpacity 使用 已经有过介绍了。

68400

Flutter GetX使用---简洁魅力!

反复查阅官方文档,使用一个全局Bloc方式,实现了“伪”跨页面交互,详细可查看:flutter_bloc使用解析;fish_redux广播机制是可以比较完美的实现跨页面交互,我也写了一篇几万字介绍如何使用该框架...,将自动执行刷新组件方法 logic层 这里变量数值写.obs操作,是说明定义了该变量为响应式变量,当该变量数值变化时,页面的刷新方法将自动刷新 基础类型,List,都可以加.obs,使其变成响应式变量...请注意,GetxController包含比较完整生命周期回调,可以onInit()接受传递数据;如果接收数据需要刷新到界面上,请在onReady回调里面接收数据操作,onReady是addPostFrameCallback...回调调用,刷新数据操作onReady进行,能保证界面是初始加载完毕才进行页面刷新操作 class GetJumpTwoLogic extends GetxController { var...Get.toNamed()来导航你命名路由,不需要任何context(你可以直接从你BLoC或Controller调用你路由),当你应用程序被编译到web时,你路由将出现在URL

7.1K103
领券