Dart/Flutter基础-变量,运算符

2019-08-16  本文已影响0人  SoundYoung
刚学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());

  });

}
上一篇下一篇

猜你喜欢

热点阅读