谈谈 Flutter 的页面

一般来说,flutter 的页面都是由 Navigator 这个组件来组织的,一个页面对应一个 Route<T>。不过我看到许多业务方同学对于这个页面的理解有些偏差,比如以下几个问题: 1. PageRoute<T> 的 build 函数是否会多次执行?(比如常用的 MaterialPageRoute<T> 里面的 build 函数) 2. 当 push 了一个新的页面的时候,不在栈顶的页面根 widget 是否会重新执行 build 函数? 3. 非栈顶页面是否会渲染? 4. 非栈顶页面的 state 是否会保存?
谈谈 Flutter 的页面

谈谈 Flutter 的 build

flutter 中的 build(context) 算是我们开发 flutter 接触最多的一个函数,不管是大到页面,还是小到一个文本,都需要通过 build(context) 来构建,所以这个 build 函数的调用将会非常频繁。 所以对我们开发者来说,熟悉 build 函数的调用时机,了解某个操作会让哪些 widget 执行 build 是非常重要的。当然这不是一个立马可以学会的东西,因为不同组件的行为可能不一样,不过底层的原理都是相同的。 读完本文后,你将对 flutter 的 build、diff 复用机制 有个全局性的掌握,文章有点长,可以先收藏了慢慢看。
谈谈 Flutter 的 build
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 混合栈插件,下面来探讨下怎么解决上述两个问题
一种无入侵的Flutter混合栈方案

Flutter混合栈管理

Flutter 是谷歌开发的一款可以跨平台开发的 UI 框架,它的原理接近于游戏引擎,目的在于统一 Android/iOS 两端开发,Flutter 页面有自己的栈,正常情况下,如果一个 app 完全由 Flutter 构成,那么只需要一个 FlutterView 即可。 上述方案只适用于一些新构建的 app,对于一些已有的 app,是不可能用 flutter 来重构的,成本太大,周期太长,所以这里需要实现一套 Native 页面栈和 Flutter 页面栈的管理方案,混合栈。
Flutter混合栈管理

Flutter入门介绍

对于开发者而言,Flutter 是什么?他是用什么语言编写的?包含那几部分?是如何运行到设备上的?Flutter 工程和 Native 工程有何差别?支持热跟新吗?Flutter 界面是如何构建的... 这里对 Flutter 做一个大致方向的介绍,让你开始了解它
Flutter入门介绍