flutter 空安全、late延迟及required关键词

空安全

DartKotlin一样都是支持空安全,空安全操作符主要有两个:

  • ?可空类型
  • ! 类型断言

可空类型

在之前我们的介绍中,声明一个变量,如:

String str = "A";
str = null;

这个时候str = null代表会报错,提示A value of type 'Null' can't be assigned to a variable of type 'String', 这个是因为str不是一个可空类型。如果要不报错只需这样声明:

String? str = "A";

方法我们也可以实现可空返回类型:

String? getData(data){
  if(data != null){
    return "this is server data";
  }
  return null;
}

 

!非空类型断言

String? str = "this is Dart";
str=null;

// ! 表示如果str不等于null 会打印str的长度
print(str!.length); 

 

late关键字

late关键字主要用于延迟初始化,在声明对象的时候可以不赋初始值:

复制代码
class Person {
  late String name;
  late int age;

  void setName(String name, int age) {
    this.name = name;
    this.age = age;
  }

  String getName() {
    return name;
  }
}
复制代码

 

required关键词

required关键词是用来允许根据需要标记任何命名参数(函数或类),使得它们不为空。因为可选参数中必须有个required参数或者该参数有个默认值。

在之前我们介绍Dart命名参数的方法时候有这样的一个方法:

复制代码
String getUserInfo(String username, {int age = 0, String sex = ''}) {//形参
  if (age != 0) {
    return "姓名:$username -> 性别:$sex -> 年龄:$age";
  }
  return "姓名:$username -> 性别:$sex -> 年龄保密";
}

getUserInfo("Max");

print(getUserInfo('张三',sex: '',age: 20));
复制代码

 

后面两个参数是可选的,如果我们使用required关键词修饰agesex,那我getUserInfo("Max")机会报错,你必须要传:

 
复制代码
String getUserInfo(String username, {required int age, required String sex}) {//形参
  if (age != 0) {
    return "姓名:$username -> 性别:$sex -> 年龄:$age";
  }
  return "姓名:$username -> 性别:$sex -> 年龄保密";
}

//调用
getUserInfo('张三',sex: '',age: 20)
复制代码

 

required关键词可以在我们类的构造方法里使用,这样可以限定了一些初始化必须的操作:

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

 

参考: Dart(六)—空安全、late延迟及required关键词 - 掘金 (juejin.cn)

posted @   蔡头一枚  阅读(310)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示