美文网首页
Dart基础之Final 和 Const

Dart基础之Final 和 Const

作者: Mariko00o | 来源:发表于2020-09-28 15:16 被阅读0次

使用过程中从来不会被修改的变量, 可以使用 finalconst, 而不是 var 或者其他类型。

1. const 、final 使用场景

1. final

final用来修饰变量 只能被赋值一次,在运行时赋值,所谓运行时 就是当程序执行到这块代码时才会对final 修饰的变量进行赋值。

  • final 使用在类中时,在声明变量时,你必须对其初始化赋值:
    错误写法:
class testPage{
  final String title;//error:The final variable 'title' must be initialized.Try initializing the variable.

  void test(){
    title = "页面";//error:'title' can't be used as a setter because it's final.Try finding a different setter, or making 'title' non-final
  }
}

正确写法:

class testPage{
  final String title = "页面";

  void test(){
  }
}
  • final 运用在StatefulWidget 中时,用来修饰变量时:
class TestPage extends StatefulWidget {
  final String title;

  TestPage({this.title});

  @override
  _TestPageState createState() => _TestPageState();
}

这种情况使用 final修饰的变量看似没有进行初始化赋值,但是不违背 final 修饰的变量在运行时赋值的理解,因为只有当定义的 StatefulWidget 被初始化使用时,这里 final 修饰的变量才会被赋值,当然也是赋值一次。

2. const

const 可用来修饰变量、修饰常量构造函数,修饰的变量只可被赋值一次。

const 可用来修饰的变量只可赋值一次,const 修饰的变量会在编译器以至于应用整个生命周期内都是不可变的常量,在内存中也只会创建一次,之后的每次调用都会复用第一次创建的对象。

///全局常量 声明
const String name = "张三";
class TestPage2 {
  ///类常量 规范要求必须使用 static 修饰
  static const String name = "张三";
  void test(){
    ///方法块常量
    const  String name = "张三";
  }
}

const 可用来修饰常量构造函数

class testPage{
  final String title;

  const testPage({this.title});
}

2. final 与 const 的不同点

1.final 与 const 修饰的变量取值时机不同

所谓取值时机不同,指的是 const 修饰的变量是在编译时已确定下来的值,而 final 修饰的变量是在运行时才确定下来的。

const 修饰的变量是在编译期,程序运行前就有确定值。

使用 const 修饰的常量的值,必须由可在编译时可计算出结果的。 对于在运行时需要获取的值是不可修饰的.

class testPage{
  final age = 18;
  ///DateTime.now() 需要在运行时才能获取值
  final date1 = DateTime.now();
  static const name = "Dav";
  static const date2 =  DateTime.now();//error:Const variables must be initialized with a constant value
}

2.应用范畴不同

final 只可用来修饰变量,const 关键字即可修饰变量也可用来修饰 常量构造函数

相关文章

  • Dart基础之Final 和 Const

    使用过程中从来不会被修改的变量, 可以使用 final 或 const, 而不是 var 或者其他类型。 1. c...

  • Dart final 与 const 的区别/异同

    Dart final 与 const 的区别/异同 Dart 灵魂三连问 final与const 的区别? 什么时...

  • Dart 基本语法

    Final以及Const 在 Dart 中使用 final 以及 const 关键字来申明常量。使用 const ...

  • Dart学习笔记——基础

    1、定义常量 Dart 常量:final 和 const修饰符 const值不变 一开始就得赋值。 final 可...

  • [Dart] final 和 const

    相同点 都必须在声明时赋值,且不能被重新赋值。 const被隐式指定为final。 不同点 const是编译时常量...

  • Dart关键字final和const

    dart官网定义:final和const使用过程中从来不会被修改的变量, 可以使用final或const, 而不是...

  • Flutter 中 Const,Static,Final 的巨大

    static , final 和 const 在 Dart 中有着巨大的差别。 核心: static 修饰 me...

  • Dart中final和const

    1. const 值必须在编译时知道,初始化后无法更改 2. final 值必须在运行时知道,初始化后无法更改 3...

  • 06Dart:const和final

    const和final定义的都是常量,值不能改变 ,并且在声明的时候就必须初始化 如果您从未打算更改一个变量,那么...

  • Dart中的const和final

    相同点必须初始化(初始化时机可能会不同,看不同点),初始化后都是只读的,不可变 具体看下面例子(声明类型的地方可以...

网友评论

      本文标题:Dart基础之Final 和 Const

      本文链接:https://www.haomeiwen.com/subject/wxvduktx.html