news 2026/6/10 13:07:04

从零理解 Android + Flutter 混合开发:引擎、页面、模块到底是什么关系?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零理解 Android + Flutter 混合开发:引擎、页面、模块到底是什么关系?

很多人在刚接触 Android + Flutter 混合开发(Add-to-App)时,都会陷入同一种混乱:
FlutterEngine 是什么?
Flutter 页面是怎么显示出来的?
多个 Flutter 模块要不要多个引擎?
为什么会出现“页面串了”的问题?

这篇文章不写接入步骤,只做一件事:
👉帮你建立一套“不会再乱”的底层认知模型。

一、混合开发不是“嵌一个页面”,而是“引入一个运行时”

很多人潜意识里以为:

“混合开发 = Android 里打开一个 Flutter 页面”

这是最容易踩坑的误解。

真实情况是:

混合开发 = Android 进程里,引入了一套 Flutter 运行时系统。

这套系统就是:FlutterEngine

FlutterEngine 不是页面,也不是 View,它更像:

  • 一套 Dart 虚拟机
  • 一套渲染引擎(Skia)
  • 一套 Platform Channel 通信系统
  • 一套资源/字体/图片管理器

一句话总结:

👉FlutterEngine = 一个正在运行的 Flutter 小系统。

二、页面从哪来?FlutterEngine ≠ Flutter 页面

Flutter 页面并不是“创建 FlutterEngine 时就有的”。

真实结构是:

  • FlutterEngine:负责“跑 Dart + 渲染能力”
  • Dart 入口(main):负责“创建 Widget 树”
  • Navigator / Widget Tree:才是你看到的页面

所以层级是:

FlutterEngine
→ 执行 main()
→ 创建 Widget Tree
→ Navigator 控制页面
→ FlutterView / FlutterActivity 只是“显示窗口”

这意味着一个非常重要的事实:

👉一个 FlutterEngine 里,可以不断切换页面,但引擎本身不会重启。

三、为什么混合项目一定会遇到“页面串了”问题?

因为很多工程都会做一件正确但危险的事:
👉复用同一个 FlutterEngine。

例如:

  • 页面 A attach 引擎 → 显示/pageA

  • 页面 B 又 attach 同一个引擎

如果你什么都不做,Flutter 会继续显示:
👉/pageA

因为:

FlutterEngine 是“常驻运行体”,
它会保留 Navigator 栈和 Widget 状态。

所以你会看到很多混合项目出现:

  • 打开的是 B 页面,结果显示 A 页面

  • 上一个模块的状态还在

  • 返回键行为异常

这些问题不是 bug,是模型没想清楚。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 22:41:24

拒稿率暴跌!虎贲等考 AI 解锁期刊论文 “录用级” 创作密码

据《自然》期刊统计,全球 78% 的学术论文因写作问题被拒稿,其中结构性缺陷占 53%,学术规范失误占 32%。选题跑偏、文献堆砌、格式混乱、AIGC 痕迹明显…… 这些痛点让无数科研人陷入 “写稿 - 拒稿 - 改稿” 的死循环。 而虎贲等考 AI 智能写…

作者头像 李华
网站建设 2026/6/10 3:13:30

学生工作管理系统如何助力教育管理现代化发展

✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…

作者头像 李华
网站建设 2026/6/9 22:05:51

setcommmask有什么用?串口编程的事件过滤器详解

在处理Windows串口通信编程时,SetCommMask是一个你必须掌握的核心函数。它本质上是一个“事件过滤器”,用于告诉操作系统你的程序关心串口上发生的哪些异步事件。合理设置事件掩码,可以让你编写的串口通信程序高效且响应迅速,避免…

作者头像 李华
网站建设 2026/6/10 10:54:53

leetcode 870. Advantage Shuffle 优势洗牌

Problem: 870. Advantage Shuffle 优势洗牌 解题过程 贪心,nums2排序,带上索引的,对nu从小到大遍历的,排序nums1,对每个nu的数字i,从nums1中找到比它大的最小数字,因nu排序了,nums1也…

作者头像 李华