Flutter基础

161 阅读1分钟

Flutter关键字var、final、const、late的区别与使用

一、var

  • var就是定义变量的意思。
  • var定义的变量会自动推断类型
  • dart 中使用 var声明变量,可以赋值不同类型的值,会自动推断变量的类型。
  • var 声明的变量如果没有初始化,那么它的值是null
  • 在声明时候就赋值,则相当于指定类型,如果再赋值其他类型会报错
var如何使用
var a;
print("打印==${a.runtimeType}");//打印==Null

var b;
b = "hello world";
print("打印==$b");//打印==hello world
print("打印==${b.runtimeType}");//打印==String

二、final

  • 使用final声明的变量,它只能赋值一次。
  • final修饰的是一个最终的变量,不能再次赋值,否则会报错
  • 可以先声明再次赋值,但是只能赋值一次
  • final声明的变量,如果不赋值,则无法使用,如runtimeType等方法
  • final声明的变量,不能多次赋值,否则报错。
final如何使用
final a = 100;
print("打印==$a"); //打印==100
print("打印==${a.runtimeType}"); //打印==int

三、const

  • const修饰常量,声明的时候就得赋值,这也是和变量最大的区别
  • 声明不赋值会报错:
const如何使用
const a = 100;
print("打印==$a"); //打印==100
print("打印==${a.runtimeType}"); //打印==int

四、late

  • Dart 2.12引入了late修饰符
  • 显式声明一个非空的变量,但不初始化
  • 如果不加late关键字,类实例化时此值是不确定的,无法通过静态检查,加上late关键字可以通过静态检查,但由此会带来运行时风险
  • 延迟初始化变量。如果这个变量没有被使用的话就不会被初始化,初始化语句不会执行。
  • 声明不赋值不会报错
  • 已经指定了类型,不能赋值别的类型
late int a;
a = 100;
print("打印==$a"); //打印==100
print("打印==${a.runtimeType}"); //打印==int