一/创建list俩种方式
1.创建无固定长度list var li = [];这种创建方式数组长度可以改变
添加内容li.add("zhangsan");
2,创建固定长度var l1 = List.filled(2, "填充内容");第一个参数是数组长度,第二个参数是数组默认填充内容等价于创建了一个长度为2的数组 ["填充内容","填充内容"];注意这种创建方式只能使用下标访问的方式修改内容,不能通过add添加内容
注:在新版的dart中不能使用new List()创建数组
二/数据类型
1、dart中可以通过is关键词判断字符串类型例如if(str is String){}
toString()将num类型转换成string类型,parse()将字符型类型转换成num
其他类型想转换成bool类型时通过比对判断
String str = "123.1";
var myNum = double.parse(str);
print(myNum is num);
wj@shyt-cxp vue-shop % dart "/Users/wangjie/Desktop/test.dart"
true
wj@shyt-cxp vue-shop %
String str = "false";
bool asds = str=="false";
print(asds);
int n = 12;
bool qwew = n == 12;
print(qwew);
// 固定数组内容类型
var l1 = <String>['苹果','香蕉','西瓜'];
List l3 = List<String>.filled(2,"");
l3[0] = "苹果";
print(l1.indexOf('苹X果')); //indexOf查找数据,查找不到返回-1查找到返回索引
l1.fillRange(1,3,'aaa');填充内容,填充结果是[苹果, aaa, aaa]表示从索引值为1开始包括1,结束在索引值在3不包括3
List li = ['苹果','香蕉','番茄'];
li.insert(1, 'abcds');
li.insertAll(1, ['aaa','sss']);//表示插入第二个参数(数组)所有内容在索引值为1的位置
List li = ['苹果','香蕉','番茄',"莉"];
var newList = li.where((element){
return element.length>1;//数组筛选
});
var otherLi = li.map((element){
return element + "23";//数组包装,返回一个新数组
});
var bi = li.any((element){
return element == '香蕉';//只要数组中任意内容满足条件就返回true
});
var bi = li.every((element){
return element == '香蕉';//需要数组里所有内容都满足条件才返回true
});
printPerson2("张三");
// printPerson2("张三", 28);
// printPerson2("张三", 28, "huang");
}
printPerson2(String name, [int age, String gender]) {//设定一个可选参数方法匿名但有顺序
print("name=$name,age=$age,gender=$gender");
}
Person(this.name,this.age);//默认构造函数简写
Person.now(){
} //命名构造函数,调用方法Person p1 = Person.now()
Person():age=18,name="Tom"{ // 初始化对象之前赋值默认参数
}
发现:静态方法里面没法访问非静态属性 const关键词在多个地方创建相同的对象的时候,内存中只保留了一个对象
dart里面构造函数是不能继承的需要重写类似Person(String name,num age) : super(name,age){} //表示继承父类构造函数
2、赋值运算b??=23;表示b如果为空则把23赋值给b