谈谈 Flutter 的页面技术分享一般来说,flutter 的页面都是由 Navigator 这个组件来组织的,一个页面对应一个 Route<T>。不过我看到许多业务方同学对于这个页面的理解有些偏差,比如以下几个问题: 1. PageRoute<T> 的 build 函数是否会多次执行?(比如常用的 MaterialPageRoute<T> 里面的 build 函数) 2. 当 push 了一个新的页面的时候,不在栈顶的页面根 widget 是否会重新执行 build 函数? 3. 非栈顶页面是否会渲染? 4. 非栈顶页面的 state 是否会保存? 2020-9-21 Flutter
谈谈 Flutter 的 build技术分享flutter 中的 build(context) 算是我们开发 flutter 接触最多的一个函数,不管是大到页面,还是小到一个文本,都需要通过 build(context) 来构建,所以这个 build 函数的调用将会非常频繁。 所以对我们开发者来说,熟悉 build 函数的调用时机,了解某个操作会让哪些 widget 执行 build 是非常重要的。当然这不是一个立马可以学会的东西,因为不同组件的行为可能不一样,不过底层的原理都是相同的。 读完本文后,你将对 flutter 的 build、diff 复用机制 有个全局性的掌握,文章有点长,可以先收藏了慢慢看。 2020-9-7 Flutter
Flutter 手势事件解析(二)技术分享* 什么是手势冲突?它和 Listener 有啥区别? * Flutter 是怎么解决手势处理的? 如果你对上述问题的答案没有底,就需要来恶补 flutter 手势处理的规则了 😁2020-8-16 Flutter
一种无入侵的Flutter混合栈方案技术分享Flutter 是一个跨平台开发的工具,它极速的开发方式、Native 的表现性能、开源的代码等特点吸引了业界众多开发者的注意。不过由于 Flutter 处于萌芽发展阶段,还不是很完善,比如本文需要探讨的混合栈实现就是 Flutter 其中的一块短板,目前没有一套官方的解决方案,都是业界开发者在试水 这里简单介绍下 Flutter 的混合栈问题:Flutter 的界面是需要 Native 的容器来承载显示的,比如 Android 里面的 Activity,iOS 里面的 ViewController。现有的 app 不可能全部改成 flutter 实现,所以需要将 flutter 接入现有的 app 中,如果此时从 Native 页面跳转到 Flutter 页面,默认的方式会重新初始化一个 Flutter 实例运行,不会复用之前创建的 Flutter 实例 > 具体细节在之前的一篇混合栈文章 Flutter混合栈管理 里面讲述了 我之前开发过一个混合栈插件来解决 flutter 的混合开发问题,最后在使用的时候会碰到以下问题: * Flutter 的共享动画会失效 (Hero 动画) * 必须使用混合栈的 api 来打开跳转页面,无法使用系统的 Navigator 为了解决上述问题,需要重新设计 Flutter 混合栈插件,下面来探讨下怎么解决上述两个问题2019-4-10 Flutter
Android 插件化的版本一致性问题技术分享Android 的插件化开发,这个坑非常深,其中有一个问题就是 bundle 和 host 的版本不一致性问题,如果 bundle 中 sdk 的版本和 host 中 sdk 版本不一致,就很有可能出现 api 兼容性问题,导致运行时 crash。 一开始会想:"让 host 和 bundle 中的版本号抽离成一个文件不就行了?" 答案肯定是不行,因为这样只能让直接依赖的版本一致,不能让传递依赖的版本一致化2019-1-14 Android
Flutter混合栈管理技术分享Flutter 是谷歌开发的一款可以跨平台开发的 UI 框架,它的原理接近于游戏引擎,目的在于统一 Android/iOS 两端开发,Flutter 页面有自己的栈,正常情况下,如果一个 app 完全由 Flutter 构成,那么只需要一个 FlutterView 即可。 上述方案只适用于一些新构建的 app,对于一些已有的 app,是不可能用 flutter 来重构的,成本太大,周期太长,所以这里需要实现一套 Native 页面栈和 Flutter 页面栈的管理方案,混合栈。2019-1-14 Flutter
Flutter入门介绍技术分享对于开发者而言,Flutter 是什么?他是用什么语言编写的?包含那几部分?是如何运行到设备上的?Flutter 工程和 Native 工程有何差别?支持热跟新吗?Flutter 界面是如何构建的... 这里对 Flutter 做一个大致方向的介绍,让你开始了解它2018-11-1 Flutter
探索阻尼动画优雅的实现方式技术分享本文探讨下如何在 Android 上实现阻尼动画,首先 wiki 下阻尼的定义:是指任何振动系统在振动中,由于外界作用(如流体阻力、摩擦力等)和/或系统本身固有的原因引起的振动幅度逐渐下降的特性,也就是阻尼系统由两个子系统组成(振子系统、阻力系统),先前写过一篇 {% post_link 如何优雅地在Android上实现iOS的图片预览 如何优雅地在Android上实现iOS的图片预览 %} ,就是一套阻尼动画的实现2018-4-30 Android
探索 Android RippleDrawable作为背景是如何绘制到View外的技术分享某天某时某刻,脑内突然发现一个疑问:RippleDrawable 是怎么把波纹绘制到所在 View 外面的? 稍微了解点 Android 绘制知识的就知道,子 View 的 onDraw(canvas) 获取到的画布默认是被父亲裁剪掉的,导致子 View 无法绘制到自身外面 那么问题就来了,为毛 RippleDrawable 可以绘制到外面,用了什么原理?莫非有特权?2017-8-28 Android
在Android上使用FFmpeg压缩视频技术分享前几天项目需要压缩视频,Github上找了许多库,要么就是太大,要么就是质量不高,其实我只需要压缩视频,最好的方案还是定制编译一个 FFmpeg 给 Android 用。 > 本项目使用 FFmpeg 和 libx264(一个第三方的视频编码器) 来编译出可以在 Android 上使用的动态库2017-6-18 Android