Flutter中const和final的区别是什么
在Flutter开发中,const和final都用于声明不可变的变量,但具体有什么区别呢?比如在性能优化、内存占用和使用场景上,它们有哪些不同?什么时候该用const,什么时候该用final?能否举个实际代码例子说明?
2 回复
在Flutter中,const用于编译时常量,值必须在编译时确定;final用于运行时常量,值在运行时确定一次。const可节省内存,final更灵活。
更多关于Flutter中const和final的区别是什么的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,const和final都用于声明不可变变量,但有以下关键区别:
1. 编译期与运行期
const:编译时常量,值必须在编译时确定final:运行时常量,值可以在运行时确定
2. 初始化时机
// const - 编译时初始化
const int maxCount = 100;
const List<int> numbers = [1, 2, 3];
// final - 运行时初始化
final int currentTime = DateTime.now().millisecondsSinceEpoch;
final List<int> dynamicList = List.generate(5, (i) => i);
3. 对象创建
const:创建编译时常量实例,相同值的const对象是同一个实例final:创建普通对象实例,每次都是新实例
// const - 相同值共享实例
const a = const [1, 2];
const b = const [1, 2];
print(identical(a, b)); // true - 同一个实例
// final - 每次都是新实例
final c = [1, 2];
final d = [1, 2];
print(identical(c, d)); // false - 不同实例
4. 使用场景
- 使用
const:值固定且可在编译时确定(如配置值、静态列表) - 使用
final:值在运行时确定但赋值后不变(如API响应、用户输入)
总结:优先使用const(性能更好),无法在编译时确定值时使用final。

