Flutter学习笔记1.9 Dart基础(Dart 2.13之后的一些新特性 空类型声明符?,非空断言!,required 关键字)

296 阅读2分钟

Null safety翻译成中文的意思是空安全。 null safety 可以帮助开发者避免一些日常开发中很难被发现的错误,并且额外的好处是可以改善性能。 Flutter2.2.0(2021年5月19日发布) 之后的版本都要求使用null safety。

##? 可空类型 示例演示:


  int a=123;
  print(a);

  String username="张三";
  print(username);

  List<String> l1=["张三","李四","王五"];
  print(l1);


  int a=123;  //非空的int类型
  a=null;  //A value of type 'Null' can't be assigned to a variable of type 'int'


  String username="张三";  //非空的String类型
  username=null;   //A value of type 'Null' can't be assigned to a variable of type 'String'.


  String? username="张三";   // String?  表示username是一个可空类型
  username=null;
  print(username);


  int? a=123;  //  int? 表示a是一个可空类型
  a=null;
  print(a);


  List<String> l1=["张三","李四","王五"];
  l1=null;  //A value of type 'Null' can't be assigned to a variable of type 'List<String>'.


  List<String>? l1=["张三","李四","王五"];
  l1=null;
  print(l1);


  调用方法
  print(getData("http://www.itying.com"));

  print(getData(null));

##! 类型断言

示例演示



void printLength(String? str){
  try {
    print(str!.length);
  } catch (e) {
    print("str is null");
  }
}

  String? str="this is str";

  str=null;

  //类型断言: 如果str不等于null 会打印str的长度,如果等于null会抛出异常
  print(str!.length);
   printLength("str");
  printLength(null);

#required关键词 required翻译成中文的意思是需要、依赖 required关键词最开始 @required 是注解 现在它已经作为内置修饰符。 主要用于允许根据需要标记任何命名参数(函数或类),使得它们不为空。因为可选参数中必须有个 required 参数或者该参数有个默认值。


// name 可以传入也可以不传入   age必须传入
class Person {
  String? name; //可空属性
  int age;

  Person({this.name, required this.age}); //表示 name 和age 必须传入

  String getName() {
    return "${this.name}---${this.age}";
  }
}

void main(args) {
  Person p = new Person(name: "张三", age: 20);
  print(p.getName()); //张三---20

  Person p1 = new Person(age: 20);
  print(p1.getName()); //null---20
}