flutter内存管理

1.flutter中const与final区别

Dart语言中Const和final关键字都用于声明常量,但它们在使用场景和特性上有显著区别。

定义

const‌:用于声明编译时常量,其值在编译时确定,且一旦赋值后不可更改。

final‌:用于声明运行时常量,其值在运行时确定,但一旦赋值后不可更改。final变量可以在运行时计算其值,例如通过构造函数或其他方法。例如:final int myFinalVar = calculateValue();

const修饰类的构造函数时,它要求该类的所有成员都必须是final

class ConstObject {
  
  final value;
  //ERROR, 必须是 final 变量。
  int value2;
  
  const ConstObject(this.value);
  
  log() {
    print(value);
  }
}

存储位置

在Flutter中,使用const修饰的变量存储位置与在C语言中有所不同。在Flutter中,const主要用于声明常量值,而不是直接关联到内存区域。尽管Dart的文档没有明确指出const修饰的变量存储在具体哪个内存区域,但从其行为和特性来看,这些常量通常会被存储在只读数据段中

static

class Page1 {
  int currentPage = 1;

  static void scorllDown() {
    ///错误:static方法不能访问普通成员变量
    currentPage = 1;
    print("ScrollDown...");
  }

  void scorllUp() {
    currentPage ++;
    print("ScrollUp...");
  }
}

class Page2 {
  // 添加 static 关键字
  static int currentPage = 1;

  static void scorllDown() {
    currentPage = 1;
    print("ScrollDown...");
  }

  void scorllUp() {   ///普通成员方法可以访问static成员变量
    currentPage ++;
    print("ScrollUp...");
  }
}

2.wiget中的key

在Flutter中,Key是一个用于标识widget的对象,它的作用有以下几个:

1.区分不同的widget

Key可以帮助Flutter区分不同的widget。当我们在widget树中添加、移除或更新一个widget时,Flutter需要确定哪些widget需要被修改或重新构建。如果两个widget具有相同的Key,则Flutter会将它们视为同一个widget,并且不会重复构建。

2.提高性能

通过使用Key,Flutter可以更加高效地处理widget树的构建和更新。例如,在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值