Dart| Flutter:如何在构造函数中初始化一个最终类变量?| Flutter实例

793 阅读2分钟

本教程解释了如何在构造函数中初始化最终类变量。

final变量只被初始化一次,只用于在运行时初始化一个变量。你可以使用静态const进行编译时的初始化值

让我们声明最终类字段,并在构造函数中用值初始化字段。

下面的程序给出了错误。最终字段'id'未被初始化,并且错误。设置器'id'没有为'Employee'类定义。

class Employee {
  final int id;

  Employee() {
    this.id = 5;
  }
}

void main() {
  Employee emp = new Employee();
}

那么,你如何在构造函数中分配最终变量?

Dart为构造函数提供了一种特殊的语法。

如何在构造函数中初始化最终属性?

Dart没有提供在构造函数体中初始化最终变量的方法。

你可以用新的语法在构造函数参数中进行初始化,如下所示

语法

Constructor(this.finalvariable)

上面的代码程序可以用新的语法重写。

class Employee {
  final int id;

  Employee(this.id) {}
}

void main() {
  Employee emp = new Employee(5);
}

接下来,让我们看看如何在构造函数中添加final private variables 初始化,如果你想保持最终变量的私有性,下面的语法会更好一些

用下划线(_)作为变量名,声明一个变量为私有。

class Employee {
  final int _id;

  Employee(int id) : _id = id;
}

void main() {
  Employee emp = new Employee(51);
}

接下来,你也可以使用{} 语法为最终字段添加default parameter data ,以便在值没有被传递时提供默认值。

可选的最终变量初始化示例

class Employee {
  final int id;

  Employee({this.id = 0});
}

void main() {
  Employee emp = new Employee(5);
}

最后,你可以在以后的运行时使用laten关键字来分配最终变量

在这个例子中,使用late 声明一个最终变量。变量在运行时被分配。

class Employee {
  late final int id;

  Employee(int j) {
    id = j * 2;
  }
}

void main() {
  Employee emp = new Employee(5);
}