Flutter动态化框架Fair的设计与思考

Flutter 动态化全流程解决方案 —Fair 工具介绍 Flutter 是 Google 开源的跨平台 UI 框架,其凭借“多端一致”和“渲染性能”上的优势成为越来越多开发者的首选。但随着使用规模加大,为了解决诸多快速迭代的业务产品线及需求,动态化成为了当下亟需解决的问题Fair是58自研的的动态化框架,通过Fair Compiler工具对原生Dart源文件的自动转化,使项目获得动态更新Widget Tree和State的能力。近期我们在吸取了开源社区的反馈与建议后,针对开发体验完善了Fair的配套工具建设,下面进入正题。 阅读详情
  • 方案二:DSL,颤抖吧布局

主要思路:基于模板实现动态化,主要针对布局层,逻辑层不能直接动态,需要封装为逻辑组件。这个没有关注到知名的开源项目。

  • 方案三:布局,逻辑,一把梭

主要思路:与方案一的最主要区别是,逻辑层也是使用dart,增加了一层语法解析和运行时。有一个代表,美团团的Flap,然而没有开源动向,无从考察更多。

这里没有提二进制整体替换的思路,原因是笔者认为它更接近与Native的插件化,在实现层面和Flutter的关联不大,并且基于二进制产物的拆分与动态下发是可以与上述方案结合使用的,并不是二选一的问题。

读到这儿,不知道你有没有一个胆大想法?

Flutter动态化轮子这么缺,都是思路为主,是不是可以搞一个出来?

原型构思

曰:欲善其事,必先利器。

光有大胆的想法是不够的。我们在项目启动初期,花了不少时间,去学习,去验证可行性。这个阶段我把它定义为:Prototype 0.0。以兴趣为导向,在招募的flutter成员中,挑选了些“壮士”去了解动态化的技术,实践证明,这是一个还凑活的法子。

在这个原型孵化的阶段,第一要务是解决能不能的问题。粗粒度的划出几个点,逐一攻破,任务点比较多,这里例举一二:

  • DSL Definition =》实现从Dart到DSL的转义规则,JSON/FlatBuffers (手动=》自动)
  • DSL Adapter =》实现DSL产物到Flutter Widget的转换

作为一枚开发,快速学习的方法与很多,最重要的是源码学习。

Talk is cheap,show me the code。

Flutter动态化框架Fair的设计与思考(1) Android进阶学习全套手册Android对标阿里P7学习视频BATJ大厂Android高频面试题最后,借用我最喜欢的乔布斯语录,作为本文的结尾:人这一辈子没法做太多的事情,所以每一件都要做得精彩绝伦。你的时间有限,所以不要为别人而活。不要被教条所限,不要活在别人的观念里。不要让别人的意见左右自己内心的声音。最重要的是,勇敢的去追随自己的心灵和直觉,只有自己的心灵和直觉才知道你自己的真实想法,其他一切都是次要。借用我最喜欢的乔布斯语录,作为本文的结尾: 阅读详情

相关推荐

Flutter动态化框架Fair的设计与思考,半路出家Android程序员看我轻松逆袭

前言 每年的3、4月份是各大企业为明年拓展业务大量吸纳人才的关键时期,招聘需求集中、空缺岗位多,用人单位也习惯在初秋进行大规模招聘。 金九银十,招聘旺季,也是一个求职旺季。 不打无准备的仗,在这种关键时期,各大公司的薪资待遇等信息就变得相当重要,特别是对那些刚出校门或者是第一次跳槽的朋友们,知己知彼方能百战不殆。 在国内就业环境中,以腾讯、阿里等大厂为代表的互联网公司一直都是求职者眼中的香饽饽,“大厂工作经历”相当于一块金字招牌。 今天我帮大家搜集整理了一份薪资、职级、考核、晋升条件资料,都是互联网大厂。我

m0_54804603的博客 1874

Flutter动态化 | Fair 2.4.0 新版本特性

Flutter动态化 | Fair 2.4.0 新版本特性 Fair 2.4.0版本开始全面支持null-safe,并支持2.5.x所有版本。 更新时间:2022.04.26 版本特性 Fair 支持空安全 null-safe 适配Flutter SDK 2.5.0、2.5.1、2.5.2、2.5.3等版本 FlatBuffers 支持在 null safe 环境下生成 bin 文件 demo 升级 sample 工程里过时的demo 补充 sample 工程里 iOS 的运行环境 贡献者

Fair58的博客 688

【跨端动态化技术知多少】

文章摘要:本文对业界跨端动态化技术做了一些归拢,方便志同道合的朋友一起学习交流、开拓视野。

qq_38607754的博客 3573

Flutter动态化开发之Fair实战

Fair是为Flutter设计的动态化框架,通过Fair Compiler工具对原生Dart源文件的自动转化,使项目获得动态更新Widget Tree和State的能力。创建Fair的目标是支持不发版(Android、iOS、Web)的情况下,通过业务bundle和JS下发实现更新,方式类似于React Native。与Flutter Fair集成后,您可以快速发布新的页面,而无需等待应用的下一个发布日期。

xiangzhihong8的专栏 804

Fair原理篇之Fair逻辑动态化通信实现

为了方便数据的统一处理,需要规定数据格式,数据的处理逻辑主要集中在js侧和dart侧,native侧只负责数据的转发,以及js的加载和释放。pageName:"对应的调用页名称,也就是js侧的#FairKey#",funcType:"调用类型,method,variable等",args:{//用户携带的参数,交由js侧处理dart侧与js侧的联系,主要是涉及到同步和异步通信,所以在设计接口方法的时候也是做了区分。

xiangzhihong8的专栏 479

Flutter Fair逻辑动态化架构设计与实现

是因为我们整体的设计理念是Flutter 原生界面和动态界面可以使用一个源文件来转换,动态化只是在紧急需求或者需求不确定的A/B测等临时场景使用,需求稳定之后,沉淀下来的源文件可以继续跟版使用,最大化的保持Flutter的性能。这样设计的好处是,当需要不停的监听_scrollController.position的位置变化时,如果这个过程设计成Flutter不停的往JS侧发送位置偏移值,由JS侧实现阀值判断的话,对bridge的压力会非常大,性能也就非常的低。逻辑动态化,最核心的难点就是如何处理变量。

xiangzhihong8的专栏 685

基于FairOK框架构建的一个免费易于二次扩展的BLOG程序。

ASP.NET V2.0,基于FairOK框架构建的一个免费易于二次扩展的BLOG程序。 采用ASP.NET(C#)开发, MSSQL2005数据库,采用了缓存、自定义分页等技术提高效率。 自带URLRewrite、TAG、置顶、留言、公告、分类等功能。 版本升级说明 新增了博客相册功能,以让博主能像访客提供丰富多彩的内容; 新增asp.net模板引擎功能,方便用户自定义模板; 抛弃了SQL Server数据库,改为SQLite数据库,方便用户使用; 修改了缓存设置,并新增文件缓存方式,两种缓存方式各有好处,供用户酌情选择; 改进HTML编辑器,增加自动排版功能; 其他N多地方均做重大修改,此处不一一列出。

thresh:基于Flutter的移动跨平台动态UI框架

Thresh —基于JS的Flutter动态化方案 | Thresh提供了一个简单,高效的应用开发框架和丰富的组件以及API,帮助开发者在前端开发中具有原生APP体验的服务,是满帮集团开源的一套稳定,高效的跨端动态化方案。 体验包下载地址 一,主要核心亮点 1,适用于前端开发,零成本接入(开发语言:JS / TS) 2,完善的开发调试面板,支持HotReload,秒级编译 3,页面支持组件等级更新 二,Thresh特性与整体架构 Thresh项目推出的初心是为了能提供一种基于Flutter的完全跨端动态化方案,性能达到甚至可以取代React Native,再加上其多端呈现一致性以及即将推出的Google Fuchsia系统替代开发语言为Flutter ,都表明Thresh未来将会充满想象力。 2.1,主要特性 自定义DSL ,扩展性强,未来会做基于sketch插件原型图自动转换DSL

K-means在关键词聚类中的尝试

K-means在文本聚类中的尝试 K-means算法是无监督的聚类算法。它的算法思想是:先随机选取K个对象作为初始的聚类中心。然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。一旦全部对象都被分配了,每个聚类的聚类中心会根据聚类中现有的对象被重新计算。 K-means算法的关键点在于: 初始k个聚类中心的选择 距离的计...

BigPig_LittleTail的博客 5573

weblogic启动异常故障处理(boot认证失败)

root 用户生成的文件属主为 root,WebLogic进程将无权读取,直接导致认证失败。· ⚠️ 密码必须完全一致:第3步 AdminAccount 命令中设置的密码,与第5步所有 boot.properties 文件中 password= 字段的值,必须保证完全一致。如果您的域下配置了受管服务器实例(如 ms_server1、ms_server2 等),必须逐一更新各实例下的免密启动文件,确保实例重启时密码与AdminServer保持一致,否则实例启动会因认证失败而报错。此步骤至关重要,必须执行。

weixin_53389944的博客 220

MTGS与3D高斯泼溅:如何用多轨迹数据重建自动驾驶场景(附代码解析)

本文深入解析了MTGS(多轨迹高斯泼溅)技术在自动驾驶场景重建中的工程实践。该方法通过分层场景表示,巧妙融合多轨迹数据,利用3D高斯泼溅技术统一处理静态几何与动态物体,有效解决了复杂环境下的重建难题。文章结合代码,详细阐述了其实现框架、损失函数设计及优化策略,为构建高保真数字孪生场景提供了实用指南。

v5w6x的博客 445

Android P HAL层添加HIDL实例(详细实现步骤)

Android P HAL层添加HIDL实例 本文将介绍如何在P OS上添加HIDL实例,简单增加seLinux策略使得可以在system_service调用测试,并用模拟器emulator验证。 调用过程为 APP->TestManager->TestService->ITast.hal 文章目录Android P HAL层添加HIDL实例实现过程一 、hardware部分1...

sinat_18179367的博客 1万+

大数据国赛第2套任务C-子任务一特征工程

根据**Hudi**的dwd_ds_hudi库中相关表或MySQL中shtd_store中相关表(order_detail、sku_info),计算出与用户id为6708的用户所购买相同商品种类最多的前10位用户(只考虑他俩购买过多少种相同的商品,不考虑相同的商品买了多少次),将10位用户id进行输出,若与多个用户购买的商品种类相同,则输出结果按照用户id升序排序,输出格式如下,将结果截图粘贴至客户端桌面【Release任务C提交结果.docx】中对应的任务序号下;

weixin_44117248的博客 903

用Python实现单层感知器:5分钟搞定逻辑与/或/异或分类(附避坑指南)

本文通过Python代码实战,详细讲解了单层感知器的核心原理与实现步骤,5分钟内即可完成逻辑与、或运算的分类任务。文章深入剖析了单层感知器的能力边界,解释了其无法解决异或(XOR)等线性不可分问题的根本原因,并提供了学习率设置、权重初始化等关键避坑指南,帮助初学者直观理解神经网络的基础。

ttt77的博客 1084

Multisim14.0仿真(五十九)基于74LS161的24进制计数器应用设计

它具有同步预置、异步清零功能,支持并行数据加载,并可在计数使能控制下进行二进制计数。:低电平时,在下一个时钟上升沿加载输入数据(A, B, C, D)。(多个 74LS161D 串联构成 8 位、12 位等更长计数器)。低电平时,下一个时钟上升沿加载输入数据(A, B, C, D)。:低电平有效,立即清零计数器(不受时钟控制)。均为高电平时,每个时钟上升沿计数。:两者均为高电平时,计数器才能递增。:立即清零计数器(不受时钟控制)。(通过预置初始值控制计数范围)。(计数范围:0 ~ 15,即。

corlin6688的博客 4760

DeerFlow 系列教程 第三篇 | 核心技术深度剖析:Skills、Memory 与 Context Engineering

摘要化是 Context Engineering 中最关键的组件——它直接决定了长对话的可用性。Skills 技能系统通过渐进式加载的三层模型,在保持系统提示词轻量的同时,支持无限数量的技能扩展。从发现到执行的 10 个生命周期阶段,配合 AI 驱动的安全扫描和多层缓存,构成了一个生产级的技能管理框架。Memory 长期记忆系统通过文件系统持久化、LLM 驱动的信息提取和防抖动异步更新,实现了跨会话的认知持久化。六类事实分类体系和修正信号检测机制,让 Agent 能够从交互中持续学习和改进。

weixin_43674738的博客 280

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: LeetCode刷题笔记-数据结构-day17
下一篇: Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2
普通网友
博客等级 码龄6年 3799粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值