Dart 变量
Dart 变量体系主要是围绕着 空安全 不可变性 初始化时机 进行设计的讷
核心的关键字有
varfinalconstlatedynamic以及类型注解
Dart 空安全
编译器强制检查变量是否可为
nullable,避免运行时空指针的异常出现吧两类
可空类型:类型后加
?实现可控类型的定义非空类型:默认是非空的,也就是在定义的时候不会出现
?
优化价值
消除的是运行时出现的风险,减少调试成本
String name = "hello world";
String? name;Dart var 关键字
定义的是动态类型的数据,编译器实现对应的动态的推导数据的类型吧
优化价值
类型注解实现让编译器提前明确变量类型,可做静态类型检查和编译期优化
var 虽然是动态类型的,保持了灵活,但是编译器在编译器实现固化类型(运行时无类型开销吧)
Dart late关键字
声明的变量延迟初始化,以及变量在首次使用时才会初始,非声明时
优化价值
适合于资源密集型对象(大内存数据或者网络请求结果)
避免声明时过早初始化导致的性能浪费
也可以用于解决循环依赖场景的解决
Dart final和const
final变量实现的是只赋值一次,运行时确定值(获取得到网络请求的配置吧)const编译期常量,值必须是编译期可确定的字面量或者构造函数
Dart dynamic 动态类型
变量类型完全动态,编译期不做类型检查,运行时解析
核心需要注意的是:我们的 final 和 const 对应的运行时和编译时的确定值的操作吧
class DataLoader {
late List<String> data; // 延迟加载,但加载后可能被更新
Future<void> loadData() async {
data = await fetchDataFromServer();
}
void refreshData() async {
data = await fetchDataFromServer(); // 允许修改,所以不用final
}
}Dart 数据类型
核心就是基础数据类型
Records 类型
集合类型
泛型
别名
异步编程
Feature
Stream
和其他语言的交互调用 swift kotlin javascript wasm
工程化 monorepo
package 的自定义实现吧pubspec 配置文件自定义吧