众所周知,Flutter是一个非常优秀的开发框架,开发者可以利用它在iOS和Android上构建交互美观的应用程序。在2022年谷歌开发者大会上,作为I/O主题演讲的一部分,主创团队正式推出了Flutter3.0。Flutter3.0更新概述Flutter3.0完成了从以移动为中心到多平台框架的路线图,提供对macOS和Linux桌面应用程序的支持,以及对Firebase集成的改进、新的生产力和性能功能,以及对AppleSilicon的支持。具体来说,Flutter3.0增加了对macOS和Linux应用程序的稳定支持。添加平台支持需要的不仅仅是渲染像素:它包括新的输入和交互模型、编译和构建支持、可访问性和国际化以及特定于平台的集成。目标是让每个人都能灵活地充分利用底层操作系统,同时尽可能多地共享开发人员对用户界面和逻辑的选择。在macOS上,已经支持Intel和AppleSilicon,并提供了通用的二进制支持,使应用程序能够打包可执行文件以在这两种架构上本地运行。在Linux上,Canonical和Google合作提供了一个高度集成的、一流的开发选项。Flutter3还带来了许多基础性的改进,提升了性能,支持MaterialYou,并更新了生产力。Flutter应用情况随着Flutter开发框架的不断成熟,越来越多的人开始使用它来构建应用。迄今为止,已有超过500,000个应用程序使用Flutter构建。data.ai等研究公司的分析以及公开评估表明,Flutter在许多细分领域都有客户使用:从微信等社交应用程序到Betterment和Nubank等金融和银行应用程序;从SHEIN和trip.com等商业应用应用到Fastic和Tabcorp等生活方式应用;从MyBMW等配套应用程序到巴西政府等公共机构。同时,在Flutter3.0大会上,研发团队发布了基于开发者的调查数据:91%的开发者认为Flutter缩短了构建和发布应用的时间。85%的开发者同意Flutter使他们的应用程序比以前更漂亮。85%的人同意Flutter使他们的应用程序可以分布在比以前更多的平台上。Flutter助力小程序开发小程序作为我国科技研发的独特产物,以其轻量、便捷、优质体验等特点,近年来发展迅速,尤其是在腾讯、阿里、百度、字节跳动等和其他公司。借助各大厂商的小程序开发平台,仅微信小程序的数量就超过了700万,小程序开发者的数量在3-4百万,相当惊人。小程序与Flutter关系最密切的是渲染优化。先来看一下整个框架:在这个架构下,我们使用Layout层的LV-CPP作为小程序的UI系统处理器,计算出UI信息的布局,然后提交给抽象后端进行渲染。LV-CPP作为小程序的框架和渲染器的中间层,侧重于C++层处理与Web相关的复杂特性。渲染端可以专注于根据特定的协议和接口将元素转化为UI组件,并最终绘制出来。通过结合Flutter和LV-CPP,我们将实现代码融合在C++和Dart上,进一步简化了基于小程序技术栈实现跨平台业务开发的框架维护成本。来看看各家厂商是如何开发的:京东:探索Flutter向微信小程序端的延伸。京东推出了Flutter_mp的开源项目。这个框架主要做了两件事:1、需要根据FlutterTemplate文件生成相关的小程序wxml。2.收集wxml渲染需要的数据,放在小程序组件的data字段中。flutter_mp目前还处于早期实验阶段,很多功能还在探索和规划中。它仅支持Center、Column、Container、Expanded、Image.asset、ListView、Row和Text等基本小部件。暂时不支持自定义widgets,自带的FlutterCode只能出现在lib/main.dart文件中。美团:基于跨平台框架Flutter的动态平台搭建微信和闲鱼都强调Flutter的跨平台,而美团则强调Flutter的动态性,而我们知道Flutter是不支持在线动态的,所以美团分享主要是围绕逻辑层动力学和渲染层动力学进行。美团在动态化引擎中预置了一个JSC模块,即JsCore,通过JSC执行JavaScript实现逻辑层的动态化,而渲染层的动态化则通过xml+css展示,然后解析生成布局树,最后通过Flutter进行渲染。微信:基于小程序技术栈跨平台实践微信小程序的微信客户端。一开始使用的是Webview渲染方案,后来采用了React-Native-Like方案。后来微信提出了一个很大胆的想法:上层还是用WXML+WXSS来表示,但是底层用Flutter引擎来渲染,觉得PlatformChannel的通信效率低,所以建了一个dart2cpp模块负责通信。目前微信不会放弃WebView渲染,尝试仅限于微信客户端内部的部分场景。**FinClip:基于小程序技术的跨终端开发平台搭建**FinClip,作为一种小程序容器技术,也可以说是小程序沙箱Runtime/Engine,提供基于浏览器内核的Runtime,使用动态语言(JS)和声明视图构建(XML),兼容互联网主流小程序技术,可采用基于Vue的DSL框架和React。其实跟Flutter、Reactive-Native、100%Native、Framework的技术都不冲突。它可以嵌入。个人小程序开发依然可以享受React等WebFrameworks、mateFrameworks、DSLFrameworke的成果。这种小程序容器技术将视图层和逻辑层分离也带来了很多好处:1.方便了多个小程序页面之间的数据共享和交互。在小程序的生命周期中具有相同的上下文可以为开发人员提供具有熟悉的编码体验的原生应用程序开发背景;2、Service和View的分离和并行实现,可以避免JS执行影响或拖慢页面渲染,有利于提升渲染性能;3、由于JS是在Service层执行的,在JS中操作DOM不会影响到View层,所以小程序无法操作DOM结构,这也使得小程序的性能优于传统小程序。H5更好。FinClip提供了FlutterSDK,支持在Flutter环境下使用小程序;满足混合Flutter和小程序的效果。这里还有Flutter开发框架中集成FinClip的文档供参考:FlutterIntegrationGuidelines。
