flutter 构造方法为什么要使用const关键字

参考:flutter 中的 key

问:构造方法为什么要使用const关键字?

答:const关键字是用来返回const对象给声明为const的参数赋值用的。
如果没有const关键字,则给声明为const的参数赋值时,会报错
Error: Cannot invoke a non-‘const’ constructor where a const expression is expected.
但是const构造方法并不总是返回const对象,当给声明为const或final的参数赋值时,
会返回一个const对象,如果是给可变参数赋值,则返回一个可变的对象。

示例一:

import 'package:flutter/material.dart';

class TestKey extends LocalKey {
  //不能实例化const对象
  TestKey() : super();
}

main() {
  //给可变变量赋值
  TestKey aKey = TestKey();
  TestKey bKey = TestKey();

  //判断是否同一个对象
  if (identical(aKey, bKey)) {
    print('identical $aKey , $bKey');
  } else {
    /// 会走到这里
    print('not identical $aKey , $bKey');
  }
}

示例二:

import 'package:flutter/material.dart';

class TestKey extends LocalKey {
  const TestKey() : super();
}

main() {
  //给const变量赋值
  const TestKey aKeyConst = TestKey();
  const TestKey bKeyConst = TestKey();

  //判断是否同一个对象
  if (identical(aKeyConst, bKeyConst)) {
    /// 会走到这里
    print('identical $aKeyConst , $bKeyConst');//同一对象
  } else {
    print('not identical $aKeyConst , $bKeyConst');
  }

  print("===============我是华丽的分割线==================");

  //给可变变量赋值
  TestKey aKey = TestKey();
  TestKey bKey = TestKey();

  //判断是否同一个对象
  if (identical(aKey, bKey)) {
    print('identical $aKey , $bKey');
  } else {
    /// 会走到这里
    print('not identical $aKey , $bKey');//不同对象
  }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值