Flutter 与 Dart 核心面试题解析及实战指南
前言
Flutter 作为 Google 推出的高性能跨平台 UI 框架,近年来在移动开发领域占据了重要地位。掌握 Dart 语言特性以及 Flutter 的底层渲染机制,是成为高级 Flutter 工程师的关键。本文整理了高频面试考点,涵盖语言基础、并发模型、渲染流程、生命周期及原生通信等核心内容,并辅以代码示例和深度解析,帮助开发者系统复习。
一、Dart 语言基础
1. String 扩展方法的使用
Dart 支持通过 extension 关键字为现有类型添加新方法,而无需修改原类定义。这有助于增强代码的可读性和复用性。
实现步骤:
- 使用
extension ... on Type语法定义扩展。 - 在扩展体内添加实例方法或静态方法。
- 直接调用该方法的对象即可使用新增功能。
// 定义 String 扩展
extension StringExt on String {
// 扩展一个加法计算方法(演示用途)
int add(int x, int y) {
return x + y;
}
}
void main() {
String str = 'hello';
// 调用扩展方法
int result = str.add(3, 7);
print(result.toString()); // 输出:10
}
单元测试示例:
import 'package:flutter_test/flutter_test.dart';
void main() {
test('StringExt 功能测试', () {
String ext = 'test';
expect(ext.add(3, 7), 10);
});
}
2. 继承与 Mixin 机制
Q: Dart 是单继承还是多继承? A: Dart 是单继承语言,一个类只能继承自一个父类。
Q: Dart 如何实现多继承效果?
A: 通过 mixin(混入)机制。Mixin 允许将一组方法注入到类中,从而实现类似多继承的功能。
Mixin 的特点:
- 继承限制:作为 mixin 的类必须继承自
Object,不能继承其他具体类。 - 构造函数:Mixin 类不能有构造函数(除非使用
mixin class语法,但传统 mixin 不支持)。 - 多重混入:一个类可以混入多个 mixin。
- 本质区别:Mixin 不是继承也不是接口,它是一种代码复用方式。
代码示例:
class A {
String info = "this is A";
void printA() {
print("A");
}
void run() {
print("A Run");
}
}
class B {
void printB() {
print("B");
}
void run() {
print("B Run");
}
}
// 类 D 继承 A 并混入 B
// 注意:with 后面的顺序决定了方法覆盖优先级
class D extends A with B {
void show() {
print(info);
}
}
void main() {
D d = D();
d.printA(); // 输出 A
d.printB(); // 输出 B
d.run(); // 输出 B Run (B 的方法覆盖了 A 的方法)
}
Q: 混入相同方法的多个混入,最终执行哪一个?
A: with 后面列出的类中,位置靠后的会覆盖靠前的同名方法。例如 class C extends Person with B, A,则 A 中的 run 方法会覆盖 B 中的 方法。


