前言:跨平台开发大都是JS,而Dart语言有着 JAVA、Kotlin、JS的特点,对于开发者学习是非常友好的,Dart的语法和Kotlin的语法非常相似,同样出自谷歌爸爸的怀抱,可是Flutter为什么使用的是Dart不用Kotlin呢?
Dart基本类型
var 定义变量,如 var a = "666" ,这和 JS 、 Kotlin 等语言类似,并且 Dart 属于动态类型语言,支持闭包。
number 类型分为 int 和 double ,其中 java 中的 long 对应的也是 Dart 中的 int 类型。Dart 中没有 float 类型。
Dart 下只有 bool 型可以用于 if 等判断,不同于 JS 这种使用方式是不合法的 var g = "null"; if(g){} 。
在Dart中,switch 支持 String 类型。
Dart变量
Dart 不需要给变量设置 setter getter 方法, 这和 kotlin 类似。Dart 中所有的基础类型、类等都继承 Object ,默认值是 NULL, 自带 getter 和 setter ,而如果是 final 或者 const 的话,那么它只有一个 getter 方法。
Dart 中 final 和 const 表示常量,比如 final name = 'GSY'; const value= 1000000; 同时 static const 组合代表了静态常量。其中 const 的值在编译期确定,final 的值要到编译时才确定。( Flutter 在 Release 下是 AOT 模式。)
Dart 下的数值,在作为字符串使用时,是需要显式指定的。比如:int i = 0; print("aaaa" + i); 这样并不支持,需要print("aaaa" + i.toString()); 这样使用。这和 Java 存在差异。所以在使用动态类型时,需要注意不要把 number 类型当做 String 使用。
DART 中数组等于列表,所以 var list = []; 和 List list = new List() 可以简单看做一样。
Dart方法
Dart 下 ?? 、??= 操作符,如: AA ?? "99" 表示如果 AA 为空,返回99;AA ??= "99" 表示如果 AA 为空,给 AA 设置成 99。
Dart 方法可以设置 参数默认值 和 指定名称 。比如: getDetail(Sting userName, reposName, {branch = "master"}){} 方法,这里 branch 不设置的话,默认是 “master” 。参数类型 可以指定或者不指定。调用效果: getRepositoryDetailDao(“aaa", "bbbb", branch: "dev");
Dart 不像 Java ,没有关键词 public 、private 等修饰符,_下横向直接代表 private ,但是有 @protected 注解。
Dart 中多构造函数,可以通过如下代码实现的。默认构造方法只能有一个,而通过Model.empty() 方法可以创建一个空参数的类,其实方法名称随你喜欢。而变量初始化值时,只需要通过 this.name 在构造方法中指定即可:
flutter的构造函数
网友评论