Flutter

Flutter学习笔记1.9 Dart基础(Dart 2.13之

2022-04-24  本文已影响0人  艾伦oy

Flutter学习笔记1.1 Dart基础(变量 常量 命名规则 基本类型
Flutter学习笔记1.2 Dart基础(运算符 条件判断 类型转换)
Flutter学习笔记1.3 Dart基础(循环语句 for,while, do...while, 多维列表循环,自增 自减 )
Flutter学习笔记1.4 Dart基础(List Set Map,属性,数据操作))
Flutter学习笔记1.5 Dart基础(函数 参数的多种定义方式 可选参数 默认参数 命名参数 箭头函数 匿名函数 递归 闭包))
Flutter学习笔记1.6 Dart基础(对象 类 构造函数 类的私有化 静态 类转换 继承 ))
Flutter学习笔记1.7 Dart基础(抽象类 多态 接口 mixins多重继承 泛型类 泛型方法 泛型接口 )
Flutter学习笔记1.8 Dart基础(第三方库导入 使用 , Async Await.dart 延迟加载)
Flutter学习笔记1.9 Dart基础(Dart 2.13之后的一些新特性 空类型声明符?,非空断言!,required 关键字)

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
}


上一篇下一篇

猜你喜欢

热点阅读