Flutter中很有意思的Future

news2024/11/25 9:47:40

最近在使用Flutter来开发完全免费开放的E6开发平台对应的手机app客户端。

由于Flutter基于Dart语言开发,而Dart具有一个非常有趣的特性:Future,如果一个方法如果被定义为Future,意味着它可以被异步调用,这一特性对页面状态更新等操作非常必要。如果页面状态的变化和刷新是同步执行的,那将导致极为卡顿的用户体验。

这也就带来了一个非常有趣的现象:由于Future的调用链具有“传染性”,如果一个方法调用了其他的Future方法,那么这个方法也必须被定义为Future,哪怕在调用时使用了await也不行。所以这导致代码中充满了Future方法和await关键字。因为在实际使用中,我们往往需要等待其他方法返回结果后才能继续进行后续处理。

尤其在前后端交互的场景中,我们常常需要等待上一个读写操作完成后才能进行下一步操作,这就要求我们使用await或then,写起来确实让人感到不便。

也许是Flutter为了解决Future带来的一些调用的问题,又引入了另一些稀奇古怪的东西:

比如文件下载经常需要显示文件下载进度,假设我们需要等文件下载完成后再解析文件做处理的话(比如APP需要下下载E6开发平台的系统包,解析后才能动态生成页面,才能进入下一步),那还得做特殊处理,当然可以先下载完成后then一把再进入下一步,但是那就可能会出现then的层层嵌套,非常难看。所以Flutter又引入了一个Completer...,就是用来等待的。在其他语言中等待不就是很贱的的事情吗,等他执行完成就行...

当然吐槽不是目的,Flutter很优秀,页面构建的思想也非常好,语言风格和java,C#等主流语言非常类似,所以上手非常容易,整个书写页面代码的过程就是一个我们从上到下构建的过程,最关键一套代码跨IOS和android嘛!

以前我们开发E6开发平台的Web客户端的时候其实也考虑过类似的方案(通过类似的层层嵌套的方式再Render出来html代码,只不过后来评估觉得后面扩展性不好,所以采用了NVelocity模版引擎来动态生成页面了)。

下面的图片是根据E6开发平台动态生产的Flutter app,欢迎交流!

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

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

相关文章

用于多模态MRI重建的具有空间对齐的深度展开网络|文献速递--基于多模态-半监督深度学习的病理学诊断与病灶分割

Title 题目 Deep unfolding network with spatial alignment for multi-modal MRI reconstruction 用于多模态MRI重建的具有空间对齐的深度展开网络 01 文献速递介绍 磁共振成像(MRI)因其无创性、高分辨率和显著的软组织对比度,已成为广…

算法记录——链表

2.链表 2.1判断是否是回文链表 1.方法一:利用栈反转链表 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode…

IO(输入输出流)

1.IO a.介绍 i.IO是指Input和Output,即输入和输出,以内存为中心: 1.Input是指从外部读入数据到内存。 2.Output是指把数据从内存输出到外部。 ii.IO流是一种顺序读写数据的模式,它的特点是单向流动。数据类似自…

【AIGC】ChatGPT提示词解析:如何生成爆款标题、节日热点文案与完美文字排版

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯情绪化的吸睛爆款标题提示词使用方法 💯紧跟节日热点选题文案提示词使用方法 💯高效文字排版技巧提示词使用方法 💯小结 &#x1f4af…

python-获取浏览器静态/动态素材

f12浏览器中 1:静态爬取 2.动态资源图片获取。斗鱼 3获取视频-抖音 一长串,最后一个http就是视频

Unity-物理系统-碰撞检测-物理材质

物理材质的作用:改变碰撞效果 因为碰撞的过程是相互的,所以在碰撞双方都要加相同的物理材质才能实现效果 物理材质创建 参数

【FPGA】IO电平标准

【FPGA】IO 电平标准 1 LVCMOS(低压CMOS)1.1 TTL、CMOS、LVTTL、LVCMOS逻辑电平定义1.2 ZYNQ-7000 PS、PL IO Level示例 2 LVTTL(低压TTL)3 HSTL(高速TTL)4 SSTL(高速)5 LVDS&#x…

Pytest测试实战|Conftest.py详解

Pytest测试实战 本文章主要详细地阐述下Pytest测试框架中Conftest.py特性。 Conftest.py实战 Fixture强大的特性在实际的工作中是非常有价值并且是实用的,这样可以根据需求,在对应的测试模块中编写Fixture函数来达到测试需求的目的。但是这样也产生了…

【面经合集】Java基础精选面试题(三)

最近,小编整理了不少Java领域面试题,如有需要,点击关注,回复【面试题】,即可下载。 31 、说说List,Set,Map三者的区别? List、Set、Map是三种不同数据结构的集合,它们的主要区别体现在存储方式…

Linux命令:用来列出当前系统内核加载的所有模块的工具lsmod详解

目录 一、概述 二、 使用方法 三、 输出格式 四、 示例 五、 相关命令 六、 高级用法 1、结合管道符 | 和 grep 命令 2、结合其他命令使用 七、应用和注意 一、概述 lsmod 是一个 Linux 命令行工具,用来列出当前内核加载的所有模块。这个命令对于了解哪些模…

分布式计算技术是什么?在数据集成值得作用?

数据是现代科技技术的基础,面对爆炸性数据的增长,要求计算能力要求更高、数据整合和处理更有效,如何应对数据集成带来的挑战?本文将探讨分布式计算技术在数据集成中的优化作用。 一 分布式计算技术。 定义:分布式计算…

《机器学习by周志华》学习笔记-神经网络-02感知机与多层网络

1、感知机 1.1、概念 感知机(Perceptron)由2层神经元模型组织,如下图所示: 「输入层神经元」接收外界输入信号后,传递给「输出层神经元 」 「输出层神经元」是「M-P神经元」,亦称「阈值逻辑单元(threshold logic unit)」 1.2、作用 「感知机」能够容易的实现逻辑「与…

初识前端监控

以下笔记来源:黑马程序员 背景 思考一下,我们的项目代码在上线之后是不是就不用管了呢? 并不是,作为前端开发工程师,我们是直接跟用户打交道的,一个应用的用户留存率跟这个应用的稳定性有很大的关系&…

NXP i.MX8系列平台开发讲解 - 4.2.1 摄像头篇(一) - 认识摄像头模组

专栏文章目录传送门:返回专栏目录 Hi, 我是你们的老朋友,主要专注于嵌入式软件开发,有兴趣不要忘记点击关注【码思途远】 文章目录 目录 1. 引言 2. 嵌入式系统中的CCM应用 3. 摄像头模组的基本组成 4. 摄像头模组的封装工艺 5. 摄像头…

GORM入门

ORM框架 什么是ORM ORM优缺点 GORM介绍 Github GORM 中文官方网站 安装 go get -u github.com/jinzhu/gorm连接数据库 连接不同的数据库都需要导入对应数据的驱动程序,GORM已经包装了一些驱动程序,只需要按如下方式导入需要的数据库驱动即可&#…

Python 方法传参详解

参数 位置参数 和关键字参数 data{error: str(e)}:传递给了 __init__ 方法中的 data 参数,表示需要返回给客户端的 JSON 数据。status500:通过 **kwargs 传递给了父类 HttpResponse,并设置了响应状态码为 500。 位置参数 和关键字…

redis Redis-Cluster常用命令与Redis性能监控

起因:随着项目的进一步推广,数据量的增大,直接访问mysql数据库获取数据所使用的时间越来越长,为解决当前主要矛盾,决定引入redis非关系型数据库作为缓存层,使得数据并不能直接命中数据库,减少访…

重生之我在代码随想录刷算法第十三天 | 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和、222.完全二叉树的节点个数

参考文献链接:代码随想录 本人代码是Java版本的,如有别的版本需要请上代码随想录网站查看。 110.平衡二叉树 力扣题目链接 解题思路 这道题目刚看到以为和二叉树的最大深度差不多,上来写了一堆迭代求深度的代码结果发现不对劲。 看了题…

非标精密五金加工的技术要求

非标精密五金加工在现代制造业中占据着重要地位,其对于产品的精度、质量和性能有着较高的要求。以下是时利和整理的其具体的技术要求: 一、高精度的加工设备 非标精密五金加工需要先进的加工设备来保证加工精度。例如,高精度的数控机床是必不…

【越学学糊涂的Linux系统】Linux指令篇(2)

一、echo指令: ✔️✔️在终端中显示文本内容或向文件中写入文本 Ⅰ.基本用法: 0x00打印字符串: 打印字符串/显示文本内容;可以用双引号作为文本内容⬇️⬇️更推荐用单引号 这里我将字符串打印出来了。和printf的功能一样&…