编程语言:Dart
Flutter与原生组件的相爱相杀:PlatformView与纹理渲染原理大揭秘!
Flutter外接纹理渲染存在一个Bug,当使用Texture控件并引入PlatformView组件时,后者会导致Texture不再刷新。这个问题只在安卓平台上出现。文章介绍了PlatformView的渲染方案演进,从VirtualDisplay到现在的Hybrid Composition和PlatformViewWrapper。Hybrid Composition可以同时渲染原生组件和Flutter画布,解决了手势问题。Flutter团队对新的PlatformView实现方案非常有信心,即将退出舞台的Hybrid Composition渲染方式需要及时适配。对于外接纹理的刷新机制,通过源码得知,当视频渲染完成时,通过Android SurfaceTexture的OnFrameAvailableListener回调通知c层,但具体的刷新机制和Bug没有详细说明。根据Debug和nativeMarkTextureFrameAvailable的实现分析,Java层回调正常,问题可能出现在C层逻辑中。
Flutter自定义引擎-编辑器两端对齐
由于我们编辑器有自定义排版的需求,所以我查看了dart framework层关于RichText的排版与绘制的流程,发现都是在native实现,也就是在flutter engine中使用C++实现的.所以我们是需要下载flutter engine源码,修改调试,并把自定义的flutter engine接入到我们的项目中.
Flutter在震坤行移动应用的实践之路
本文主要介绍项目中Flutter-Native混合开发相关实践,欢迎大家阅读!
Soul Flutter内存治理经验谈
在采用 Flutter 技术过程中,我们逐步发现 App 的内存使用存在上升,在一些场景和调查中发现 Flutter 的内存使用相对较高,随着业务的迭代和发展,这一风险也逐步暴露。
这些年我们一起踩过的 Flutter 坑
Flutter 技术并非新技术,近年以来备受各类型公司追捧,其中不乏头部公司参与其中。Soul 2020年开
DartVM GC 深度剖析
GC 全称 Garbage Collection,垃圾收集,是一种自动管理堆内存的机制,负责管理堆内存上对象的释放。GC 让程序员把更多的精力集中在实际问题上。Dart 作为 Flutter 的主要编程语言,在内存管理上也使用了 GC。
Flutter-Web从0到部署上线(实践+埋坑)
Flutter 的诞生虽然来自 Google 的 Chrome 团队,但大家都知道 Flutter 最先支持的平台是 Android 和 iOS,至今最核心的维护平台依然是 Android 和 iOS。由于 dart 语言的学习成本不高,Flutter 的响应式UI与 ComposeUI 和 SwiftUI 都有极大的相似之处,整体的架构思路也更偏向于客户端的模式,再加上为了实现很多硬件或 Native 相关的基础功能也需要专业的客户端开发知识,所以 Flutter 更多的是被客户端开发同学认可并使用(在我们的团队中,Flutter 已经是客户端开发同学的必备基本技能)。 在此背景下,Flutter 最初并不在 web 端上发力。不过由于 Flutter 本身就是携带了 web 的基因,在 Flutter2 发布的同时也发布了 web 的稳定版。那么它有什么优势和劣势呢?
Flutter 全埋点的实现
基于 Dart AOP 实现的 Flutter App 全埋点功能不仅能够提升开发效率,还能够方便后期的维护工作,为项目的稳定性和可维护性提供了有力支持,希望以后可以通过 AOP 技术解决更多难题。
化繁为简:Flutter组件依赖可视化
正在使用 Flutter 开发的你是否也有这样的困扰:组件繁多,依赖关系错综复杂,理不清头绪,看不清耦合。那么有没有一种工具或者方法让我们的依赖关系变得清晰明了,让人秒懂呢?我们给出答案就是:依赖关系可视化。
探索Flutter路由管理新姿势
mixin机制助力Flutter路由模块化。
Flutter For Web性能优化和新场景探索
近年来Flutter在App开发领域深受欢迎,但是Flutter For Web并没有被大规模应用。首先是因为它的首屏加载速度普遍较慢,另外也会有不同程度的卡顿问题。针对上述问题,作者做了较为详尽的调研,并在文章中将优化和探索的经验进行分享。
Flutter代码静态检查原理与应用
Flutter虽然火了很久,但是大家对Flutter代码静态检查原理与应用依然有很多大大小小的问题,在Flutter开发中就存在一些大家都会遇到普适性的问题。
Flutter 的线程模型和异步原理
在Android应用中, 用户时常会遇到界面卡顿的情况,非常影响用户的体验。作为Android开发肯定都知道:应用在主线程里做了大量的耗时操作(例如文件读写, 数据库读写,网络访问,图片编解码等),就会导致UI不能及时刷新,出现跳帧现象。如果应用主线程不能及时处理用户的输入事件或广播消息,系统甚至会直接弹出著名的ANR对话框,提示用户杀死应用。
在Flutter应用中,如果出现界面卡顿,它的原因也是如此吗?
我们带着这些疑问,一起来搞清楚Flutter的线程模型和异步原理,并找到问题的答案。
Flutter 地图在携程的最佳实践
助力快速接入Flutter地图插件的实战经验。
政采云 Flutter 单元测试实践
从最初的探索,再到现在的团队成员共同完善 Flutter 单元测试,期间踩了不少坑也积累了不少经验,现将这些内容分享出来,希望能给对 Flutter 单元测试感兴趣的同学带来一些帮助。
Flutter 如何更加准确地获取FPS
如果我们需要对比Flutter与Native的性能数据,那么我们就需要获取Flutter的一部分性能数据,FPS就是其中的一个衡量标准。