【Flutter】Dart 技巧 ( 独立主函数入口 | 可空类型判定 | 默认值设定 )

2023-03-28 21:17:39 浏览数 (2)

文章目录

  • 一、独立主函数入口
  • 二、可空类型判定
  • 三、默认值设定
  • 四、完整代码示例
  • 五、 相关资源

一、独立主函数入口


在 dart 文件中声明 main() 函数 , 即可脱离 Flutter 环境 , 独立执行该 main 函数 ;

代码语言:javascript复制
/// 可脱离 Flutter 环境独立执行的函数
void main(){
  print("main");
}

main 函数左侧有两个三角的图标 , 单击该按钮 , 即可执行该 main 函数 ;

二、可空类型判定


可空类型判定 : 不确定对象是否为空 , 通过 ?. 的方式调用 , ( 类似于 Kotlin 的可空类型调用 ) , ? 的作用是先判定是否为空 , 如果为空 , 就终止调用 , 不会报空指针异常 ;

代码语言:javascript复制
/// 可脱离 Flutter 环境独立执行的函数
void main(){
  print("main");

  Student student;
  /// 1. 安全调用 : 不确定对象是否为空 , 通过 ?. 的方式调用
  /// ( 类似于 Kotlin 的可空类型调用 )
  /// ? 的作用是先判定是否为空 , 如果为空 , 就终止调用
  print("打印 student 名字 : ${student?.name}");

}

class Student{
  String name;
  int age;
  Student(this.name, this.age);
}

执行结果 :

代码语言:javascript复制
main
打印 student 名字 : null

三、默认值设定


使用 ?? 可以为某个空值设置一个默认值 , 如果某个值没有获取到 , 或者获取到为空 , 可以为该变量或表达式设置一个默认值 ;

代码语言:javascript复制
student?.name??"Tom"

上述代码的作用是如果 student?.name 值为空 , 则返回 “Tom” 默认值 ;

代码示例 :

代码语言:javascript复制
  /// 2. 设置默认值
  /// 使用 ?? 可以为某个空值设置一个默认值
  /// 这里如果 student?.name 为空 , 则默认值是 "Tom"
  print("打印 student 名字 : ${student?.name??"Tom"}");

执行结果 :

代码语言:javascript复制
打印 student 名字 : Tom

四、完整代码示例


完整代码示例 :

代码语言:javascript复制
/// 可脱离 Flutter 环境独立执行的函数
void main(){
  print("main");

  Student student;
  /// 1. 安全调用 : 不确定对象是否为空 , 通过 ?. 的方式调用
  /// ( 类似于 Kotlin 的可空类型调用 )
  /// ? 的作用是先判定是否为空 , 如果为空 , 就终止调用
  print("打印 student 名字 : ${student?.name}");

  /// 2. 设置默认值
  /// 使用 ?? 可以为某个空值设置一个默认值
  /// 这里如果 student?.name 为空 , 则默认值是 "Tom"
  print("打印 student 名字 : ${student?.name??"Tom"}");

}

class Student{
  String name;
  int age;
  Student(this.name, this.age);
}

代码执行结果 :

代码语言:javascript复制
main
打印 student 名字 : null
打印 student 名字 : Tom

五、 相关资源


参考资料 :

  • Flutter 官网 : https://flutter.dev/
  • Flutter 开发文档 : https://flutter.cn/docs ( 强烈推荐 )
  • 官方 GitHub 地址 : https://github.com/flutter
  • Flutter 中文社区 : https://flutter.cn/
  • Flutter 实用教程 : https://flutter.cn/docs/cookbook
  • Flutter CodeLab : https://codelabs.flutter-io.cn/
  • Dart 中文文档 : https://dart.cn/
  • Dart 开发者官网 : https://api.dart.dev/
  • Flutter 中文网 ( 非官方 , 翻译的很好 ) : https://flutterchina.club/ , http://flutter.axuer.com/docs/
  • Flutter 相关问题 : https://flutterchina.club/faq/ ( 入门阶段推荐看一遍 )

博客源码下载 :

  • GitHub 地址 : https://github.com/han1202012/flutter_app_hello ( 随博客进度一直更新 , 有可能没有本博客的源码 )
  • 博客源码快照 : https://download.csdn.net/download/han1202012/15463304( 本篇博客的源码快照 , 可以找到本博客的源码 )

0 人点赞