基础类型定义
//集合,详细的后面再说,这里简单展示下List的一些定义 ——> js array
List list1 = new List();//默认长度是0
List list2 = new List(3);//dart中也是有泛型的,初始化集合大小
List list3 = new List()..length = 3;//这其实就是一种链式写法,后面再详细介绍
List list4 = [1,'2',3.0,true];//直接初始化集合
List list5 = ['1',"2"];//如果前置类型指定了泛型,初始化就必须是指定的类型
//映射,详细的后面再说,这里简单展示下Map的一些定义 ——> js object
Map map1 = new Map();
Map map2 = new Map();//Map的泛型
Map map3 = {"key1" : "value1", 1 : 2};//直接初始化Map
//下面我们再看下常用的一些修饰词
final String finalStr = "这是一个不可修改的字符串";
static String staticStr = "这是一个静态字符串";
//static final 组合使用要注意,static 必须修饰在 final 前面,否则会编译错误
static final String staticFinalStr = "这是一个不可修改的静态字符串";
//const 常量,目前觉得它非常类似 final,但是它只能修饰静态的
static const String constStr = "这是一个常量";
//_ 下滑线,这个可以用于大多数名称(如:变量名,类名等)前,它会将修饰的类或变量私有化
String _privateStr = "这是一个私有的字符串";
//在方法名前加 _ 就可以将方法私有化
void _method5() {
print("控制台打印"); //这个方法是内置的,哪里都可以调用
}
//方法
void method1() { } //无参无返回
String method2() { return "返回字符串"; } //无参有返回
//可以看到返回定义是可以不写的,但是并不推荐,因为这样没有可读性
method3() { } //默认无返回
method4() { return "返回字符串"; } //默认返回字符串类型
函数参数定义
//下面看下 dart 中参数可以怎么定义
//[] 表示可选参数,顾名思义 可以传,也可以不传
//注意:可选参数必须定义在一起,放到最后面,传参时是按照方法顺序的
//看到 param4,可以看到参数定义可以不指定类型的,应该默认 Object 的,不过不推荐
//以及最后面多出一个逗号也不会有编译错误,java 的话就比较严格了,不过这并不能说是优点
static void method7(int param1, String param2, [double param3, param4, ]) {
if (param3 != null) { //假设 param1 = 5,param3 = 2.1
//简单看下运算符
print(param1 * param3); //输出:10.5
print(param1 / param3); //输出:2.380952380952381
print(param1 ~/ param3); //取整,输出:2
print(param1 % param3); //输出:0.7999999999999998
//${} 字符串中引入简单操作
print("param1 + param3 = ${param1 + param3}"); //输出:param1 + param3 = 7.1
}
//如果 param2 = "参数二"
print("我们引入${param2}这个字符串"); //输出:我们引入参数二这个字符串
if (param4 != null) { //假设 param4 = "参数四"
//{} 花括号在某些情况是可以不写的,但是不推荐
print("这是param4的值是$param4"); //输出:这是param4的值是参数四
}
}
//{} 表示命名参数,在调用的时候不需要关心参数顺序,但需要指定参数名称,同时他们都是可选的
//例:FirstDart.method8(param2: "参数二", param1: "参数一");
// FirstDart.method8(param1: "参数一");
static void method8({String param1, String param2}) {}
//implements 实现,可以多实现,但是必须重写方法
classAimplimplements A {
@override
void a() { }
}
//with 混合,这对我来说是个新鲜概念//Amixin 可以使用 with 多个混合类,同时获得他们的所有方法和属性,有点多继承的意思
class Amixin with A {}