刚学flutter准备把遇到的坑,分享出来,自己也做个记录
dart语言基础 ,基本数据类型和一些集合操作,循环遍历等等
testDart
() {
//dart中的一些基本数据和基本操作
var testMap = {
'title': 'my love',
'author': 'liwei',
'mainpersion': ['xiaoli', 'xiaoz', 'xiaowang']
}; //类似json
List list = testMap['mainpersion'];
print('里面的主要角色有 ${list[1]}');
if (list is List) {
print("true");
}
int a = 6;
int b = 4;
print(a / b); //除
print(a % b); //取余
print(a ~/ b); //取整
//赋值运算 ??= 表示dang stra的值是空的时候把10赋值给stra
String stra;
stra ??= "10";
print('stra的值' + stra);
//赋值和运算符号组合
var acount = 10;
acount += 10;
print("acount的值" + acount.toString());
//三元运算符
var xb = '女';
var flag = false;
xb = flag ? '女' : '男';
switch (xb) {
case '男':
print('他是一个男人');
break;
default:
print('她是一个女人');
}
//??运算符
var aw;
var bw;
aw = bw ?? 20; //如果bw不是空,把bw赋值给aw,否则,aw等于20
print("aw的值---" + aw.toString());
//值转换 number和string 之间的转换
String abc = "123.1";
double bba = double.parse(abc) + 1;
print(bba.toString());
String price;
try {
double bba = double.parse(price) + 1;
print(bba.toString());
} catch (err) {
print('0' + err.toString());
}
if (price == null || price.isEmpty) {
print('price 为空的');
} else {
print("price 不为空");
}
//const与final的区别 final不仅仅有const编译常量的特性,final还是运行时的常量,可以第一次不赋值,执行前赋值即可
final now = new DateTime.now();
print('当前时间' + now.toString());
// const now_cow = new DateTime.now();//报错
//++ 和 -- 与java不同,aii都会加1,无论++加在前面还是后面
int aii = 10;
++aii;
print("++aii后的值" + aii.toString());
aii++;
print("aii++后的值" + aii.toString());
//另外一种情况
int bii;
bii = aii++;
print('aii的值' + aii.toString());
//发现bii的值并没有加一,因为是先把aii的值赋给bii,
//然后aii自己进行++操作,如果写成bii=++aii;那么bii就会加1
print('bii的值' + bii.toString());
}
//dart中的集合操作
void testJh() {
//list的常用属性
List fruitList = ['苹果', '香蕉', '桃子'];
fruitList.add('西瓜'); //添加
print('list的长度' + fruitList.length.toString());
print('翻转list--' + fruitList.reversed.toString());
List reList = fruitList.reversed.toList(); //tolist必须
print('翻转赋值后的第一个值' + reList[0]);
print(reList.isEmpty);
//list常见方法
reList.addAll(['桃子', '芒果']);
print(reList.indexOf('苹果'));
print(reList.indexOf('榴莲')); //查找不到返回-1,可以用此方法,判断是否有特定的数据
print('removeat前的结果' + reList.toString());
reList.removeAt(3);
reList.remove('香蕉');
print('removeat后的结果' + reList.toString());
//修改list中的数据 把西瓜改成watermelon
reList.fillRange(0, 1, 'watermelon');
print('修改后的list--' + reList.toString());
reList.insert(2, "栗子");
print('插入后的list--' + reList.toString());
reList.insertAll(2, ['菠萝', '山竹']);
print('插入后的list--' + reList.toString());
String mystr = reList.join('-').toString();
print('添加分隔符转换' + mystr);
String spliStr = mystr.substring(0, 19);
reList = spliStr.split('-');
print(reList);
/*Set 无序,不能重复 list是可以重复的*/
var myset = Set();
myset.add('香蕉');
myset.add('香蕉');
myset.add('苹果');
print(myset.toString()); //输入结果为{香蕉, 苹果}
print('myset-first-' + myset.first);
// 可以用此特性为list去重
reList.add('泥猴桃');
reList.add('泥猴桃');
print('没去重之前的list' + reList.toString());
Set filterSet = reList.toSet();
print("去重之后的list" + filterSet.toList().toString());
/*map使用 类似json对象 */
Map demoMap = new Map();
demoMap['name'] = "李四";
demoMap['ago'] = 20;
demoMap['sex'] = '男';
// Map map = {
// 'name':'张三',
// 'age':20,
// 'sex':'男'
// };
print(demoMap.isEmpty);
print(demoMap.values.toList());
print(demoMap.values.toList()[1]);
print(demoMap.keys.toList());
print(demoMap.length);
//map添加数据
demoMap.addAll({
'habit': ['篮球', '足球'],
'loc': '杭州'
});
print("map添加数据后--" + demoMap.values.toList().toString());
demoMap.remove('age');
print("map删除数据后--" + demoMap.values.toList().toString());
if (demoMap.containsValue('杭州')) {
print('他是杭州人');
} else {
print('他不是杭州人');
}
if (demoMap['habit'].toString().contains('篮球')) {
print('${demoMap['name']}喜欢篮球');
} else {
print('${demoMap['name']}不喜欢篮球');
}
List personList = new List();
personList.add(demoMap);
print('我是' + personList[0]['name']);
/*list map set 的 forEach map where any every方法 */
//list三种数据循环方式
// for(int i=0;i<fruitList.length;i++) {
// print(fruitList[i]);
// }
// for(var item in fruitList) {
// print(item);
// }
fruitList.forEach((value) {
//forEach后面跟的是一个方法,我这里使用了一个没有名字的方法
print(value);
});
List numList = [1, 2, 3, 4, 5, 6, 7, 8, 9];
final doubleNumList = numList.map((value) {
//map的用法就是,修改列表的每一项,返回一个新的list,用var 或者final 修饰
return value * 2;
});
print("用map方法给每一个值*2" + doubleNumList.toString());
var whereList = numList.where((value) {
//where的用法就是,判断条件,返回一个满足条件的新的list
return value > 6;
});
print("用where 输入大于6" + whereList.toString());
var isHaveOne = numList.any((value) {
//如果list集合中有一个大于6的数据,则返回true
return value > 6;
});
print("用any判断集合中是否有至少一个大于6的item--" + isHaveOne.toString());
var isAll = numList.every((value) {
//如果list集合中所有数据都大于6,则返回true,否则返回false
return value > 6;
});
print("用any判断集合中是否有至少一个大于6的item--" + isAll.toString());
//set循环 转换成list进行遍历,或者用foreach 下面这种不行
// for(int x=0;x<myset.length;x++) {
// print(myset[x].toString());
// }
//map循环
demoMap.forEach((key, value) {
print('map-key-' + key + '--map-vaule---' + value.toString());
});
}
网友评论