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

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

文章目录

一、独立主函数入口

二、可空类型判定

三、默认值设定

四、完整代码示例

五、 相关资源





一、独立主函数入口


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


/// 可脱离 Flutter 环境独立执行的函数
void main(){
  print("main");
}


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

image.png







二、可空类型判定


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


/// 可脱离 Flutter 环境独立执行的函数
void main(){
  print("main");
  Student student;
  /// 1. 安全调用 : 不确定对象是否为空 , 通过 ?. 的方式调用
  /// ( 类似于 Kotlin 的可空类型调用 )
  /// ? 的作用是先判定是否为空 , 如果为空 , 就终止调用
  print("打印 student 名字 : ${student?.name}");
}
class Student{
  String name;
  int age;
  Student(this.name, this.age);
}


执行结果 :


main
打印 student 名字 : null






三、默认值设定


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


student?.name??"Tom"


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


代码示例 :


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


执行结果 :


打印 student 名字 : Tom






四、完整代码示例


完整代码示例 :



/// 可脱离 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);
}


代码执行结果 :


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( 本篇博客的源码快照 , 可以找到本博客的源码 )


目录
相关文章
|
2月前
|
Dart
如何在 Flutter 项目中使用 Dart 语言?
如何在 Flutter 项目中使用 Dart 语言?
127 58
|
23天前
|
Dart
flutter dart mixin 姿势
flutter dart mixin 姿势
|
19天前
|
Dart 安全 编译器
Flutter结合鸿蒙next 中数据类型转换的高级用法:dynamic 类型与其他类型的转换解析
在 Flutter 开发中,`dynamic` 类型提供了灵活性,但也带来了类型安全性问题。本文深入探讨 `dynamic` 类型及其与其他类型的转换,介绍如何使用 `as` 关键字、`is` 操作符和 `whereType<T>()` 方法进行类型转换,并提供最佳实践,包括避免过度使用 `dynamic`、使用 Null Safety 和异常处理,帮助开发者提高代码的可读性和可维护性。
69 1
|
1月前
|
Dart 开发者 Windows
flutter:dart的学习
本文介绍了Dart语言的下载方法及基本使用,包括在Windows系统上和VSCode中的安装步骤,并展示了如何运行Dart代码。此外,还详细说明了Dart的基础语法、构造函数、泛型以及库的使用方法。文中通过示例代码解释了闭包、运算符等概念,并介绍了Dart的新特性如非空断言操作符和延迟初始化变量。最后,提供了添加第三方库依赖的方法。
30 12
|
3月前
|
Dart 前端开发 JavaScript
Flutter&Dart-异步编程Future、Stream极速入门
Flutter&Dart-异步编程Future、Stream极速入门
78 4
Flutter&Dart-异步编程Future、Stream极速入门
|
3月前
|
Dart JavaScript 前端开发
Dart或Flutter中解决异常-type ‘int‘ is not a subtype of type ‘double‘
Dart或Flutter中解决异常-type ‘int‘ is not a subtype of type ‘double‘
135 4
|
3月前
|
Dart
Flutter笔记:手动配置VSCode中Dart代码自动格式化
Flutter笔记:手动配置VSCode中Dart代码自动格式化
466 5
|
4月前
|
JSON Dart 安全
Flutter Dart Macro 宏简化 JSON 序列化
今天我们将会体验 dart 语言新特性 macro 宏,来实现对 json 的序列化,用到的包是官方实验室写的 json 包。 本文将会一步步的带你实现这个功能,那我们开始吧。
Flutter Dart Macro 宏简化 JSON 序列化
|
3月前
|
Dart 开发工具 Android开发
Android Studio导入Flutter项目提示Dart SDK is not configured
Android Studio导入Flutter项目提示Dart SDK is not configured
306 4
|
3月前
|
Dart 安全 API
Android跨平台开发之Dart 3.5 与 Flutter 3.24:革新跨平台应用开发
【Dart 3.5 与 Flutter 3.24:革新跨平台应用开发】首发于公众号“AntDream”。本文深度解析 Dart 3.5 和 Flutter 3.24 的新特性,包括空安全强化、Web 与原生互操作性增强及 Flutter GPU API 等,展示了如何提升代码质量和用户体验。
63 1