跨平台开发面试题
Flutter 详解
Flutter 是 Google 推出的跨平台 UI 工具包,用 Dart 写一份代码即可编译到 iOS、Android、Web、macOS、Windows、Linux、嵌入式设备。它与 KMP/RN 的最大区别是"不映射到原生控件,也不跑在 WebView 里"——Flutter 自带一套 Impeller 渲染引擎,直接向 GPU(Metal / Vulkan)提交绘制命令,从按钮到滚动条的每一个像素都是自己画出来的。 这种"自绘"架构让 Flutter 拥有"双端像素级一致“的超能力,也带来了”iOS 原生设计语言永远慢半拍“的原罪。在 AI Coding 时代,Flutter 的统一性和 GenUI 生态让它成为 LLM 生成 UI 的理想容器,但端侧 AI、Liquid Glass 等 Apple 独占能力的缺失也让它在 iOS 26 时代面临新的挑战。 本文从架构出发,穿透到 Dart VM 编译链、Impeller 渲染管线、iOS 嵌入原理,再到 AI 时代的机遇与陷阱,是一篇写给 iOS 开发者的 Flutter 体系化导读。 一、Flutter 是什么 1.1 一句话定义 Flutter 是一套”声明式 UI + 自绘渲染 + AOT 原生代码“的跨平台框架: 声明式 UI:UI 是 build(context) => Widget 的纯函数结果,状态变 → 重新 build → diff → 更新。 自绘渲染:所有控件都是 Flutter 自己用 Impeller 绘制出来的,不使用 UIKit / SwiftUI 组件。 AOT 编译:发布时 Dart 代码被 gen_snapshot 编译为 ARM64 机器码,与 C++ 引擎一起链接到 Flutter.framework 内。 一句话记忆:Flutter 不是跑在 iOS 上,它是借 iOS 的一块 CAMetalLayer 画自己的东西。 ...