flutter 空安全、late延迟及required关键词
空安全
Dart和Kotlin一样都是支持空安全,空安全操作符主要有两个:
?
可空类型!
类型断言
可空类型
在之前我们的介绍中,声明一个变量,如:
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
关键词修饰age
和sex
,那我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}); }
越努力,越幸运
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具