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中,constfinal都用于声明不可变变量,但有以下关键区别:

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

回到顶部