Flutter学习日记(一)--Dart基础知识

小伙伴,大家新年好,这是我2021年开始写的文章啦!前一段时间不是过年嘛,就懒惰了一段时间,但是最近公司这边也开始确定了接下来的项目都是使用Flutter了,所以,为了保住饭碗,就毅然决然的走上了Flutter的道路,关于Flutter的介绍我就不多说了,大家可以百度下!
这篇文章主要是说下Dart语言的基础类型:
1、数字类型:主要分为三种,num,int,double,num是数字类型的父类,而int和double是整型数字和双精度数字

void _numType() {
    num num1 = -1.0; //是数字类型的父类
    num num2 = 2; //是数字类型的父类
    int int1 = 3;
    double d1 = 1.68;
    print("num:$num1  num:$num2 int:$int1 double:$d1");
    print(num1.abs()); //求绝对值
    print(num1.toInt()); //转换成int
    print(num1.toDouble()); //转换成double
  }

2、字符类型:

 ///字符串
  void _stringType() {
    String str1 = '字符串', str2 = "双引号"; //定义字符串可用''也可以用""
    String str3 = 'str:$str1 str2:$str2'; //字符串拼接和kotlin一样
    String str4 = "常用数据类型,清查看控制台输出";
    String str5 = " my name is jeffrey ";
    String str6 = "MY NAME IS JEFFREY";
    print(str3);
    //字符串常用的方法,长度获取string.length
    //1,字符串的截取,下标从0开始,截图不包含最后一位的
    print(str4.substring(1, 5));
    //2,获取指定字符串的位置
    print(str4.indexOf("类型"));
    //3,字符串分割String.split(分割点)[从什么位置开始分割],此分割只留下分割点前面那部分下来
    print(str4.split(",")[0]);
    //4,取当前索引位置字符的UTF-16码,暂时不知道有什么用
    print(str4.codeUnitAt(0));
    //5,判断当前字符串是否以"常用"开头,返回的是布尔类型
    print(str4.startsWith("常用"));
    //6,判断当前字符串是否以"输出"开头,返回的是布尔类型
    print(str4.endsWith("输出"));
    //7,把当前字符串转换为大写字母
    print(str5.toUpperCase());
    //8,把当前字符串转换为小写字母
    print(str6.toLowerCase());
    //9,判断当前字符串是否包含指定字符,返回布尔类型
    print(str5.contains("is"));
    //10,去除字符串首尾的空格
    print(str5.trim());
    //11,替换第一次出现指定字符位置的字符,参数1:被替换的指定字符,参数2:替换的内容
    print(str5.replaceFirst("is", "are"));
    //12,全部替换指定的字符
    print(str5.replaceAll("f", "d"));
  }

3、布尔类型:

 ///布尔类型,Dart是强 bool 类型检查,只有bool 类型的值是true才被认为是true
  void _boolType() {
    bool success = true, fail = false;
    print(success || fail); //输出为true
    print(success && fail); //输出为false
  }

4、List集合:

///List集合
  void _listType() {
    print('----listType-----');
    ///集合初始化的方式,集合内容可以是任意类型的
    List list=[1,2,3,"集合"];
    //集合泛型的用法,<>为泛型的标志,限制了集合中元素的类型
    List<int> list2=[1,2,3];
    //添加元素到集合中,add添加单个元素,而addAll则是把某个集合的全部元素添加进来
    List list3=[];
    list3.add("list3");
    list3.addAll(list);
    print(list3);
    //集合生成函数的用法,参数1:生成函数的长度(从0开始算),参数2:生成函数的规则,index为函数的位置
    List list4=List.generate(3, (index) => index*2);
    print(list4);
    //集合遍历的三种方式方式
    for(int i=0;i<list.length;i++){
      print(list[i]);
    }
    for(var index in list){
      print(index);
    }
    list.forEach((element) {
      print(element);
    });
    //访问集合中的元素,下标从0开始
    print(list4[0]);
    //集合的长度
    print(list4.length);
    //在指定位置插入元素,参数1:指定的元素位置(下标从0开始),参数2:参入的内容
    list.insert(3, "element");
    print(list);
    //移除指定位置的元素
    List list5=[1,2,3,4,5];
    list5.removeAt(4);
    print(list5);
    //清楚集合中的所有元素
    List list6=[1,2,3];
    list6.clear();
    print(list6);
    //截取子集合,参数1和2均为下标位置,下标从0开始,不包含最后下标的元素
    print(list.sublist(1,3));
    //获取集合中某个范围的元素,下标从0开始
    print(list.getRange(1, 4));
    //为每个元素之间增加字符进行拼接
    print(list.join(","));
    //判断集合是否为空,返回布尔类型
    print(list.isEmpty);
    //判断集合中是否含有该元素
    print(list.contains(1));
  }

5、map集合:

 ///map是将key和value相关联的对象,key和value都可以是任何类型的对象,并且key是唯一的,如果key重复,后面添加的key会替换前面的内容
  void _mapType() {
    print('----_mapType----');
    ///map初始化方法
    Map names={'xiaoming':'小明','xiaohong':'小红'};
    print(names);
    Map ages={};
    ages['xiaoming']=16;
    ages['xiaohong']=18;
    print(ages);
    ///Map遍历的三种方式
    ages.forEach((key, value) {
      print('$key,$value');
    });
    //注意=>是return的意思,MapEntry意思是map里面的每个map集合
    Map ages2=ages.map((key, value) =>
    //迭代生成新的一个Map
       MapEntry(value,key)
    );
    print(ages2);
    for(var key in ages.keys){
      print('$key  ${ages[key]}');
    }
    //判断是否含有指定的key,返回布尔类型
    print(ages.containsKey("xiaoming"));
    //判断是否含有指定的value,返回布尔类型
    print(ages.containsValue(16));
    //把map键值对中key或者value中提取出来形成List集合
    print(ages.keys.toList());
    //修改指定key的value值
    print(ages['xiaoming']="小命");
    //移除指定key的value值
    Map map2={1:2,3:4};
    map2.remove(1);
    print(map2);
  }

6、dynamic、var、object三者区别:

///科普小知识:dynamic、var、Object三者的区别
  void _tips() {
    ///dynamic为动态数据类型,它所定义的变量在编译期间会失效,也就是编译中无法识别它所定义的类型,但是在运行中会依据它所定义的变量的内容进行类型推导
    ///而且它所定义的变量会依据它变量的值的变化,而在运行中类型也会进行变化
    dynamic x="xiaoming";
    print("${x.runtimeType}   $x");
    x=123;
    print("${x.runtimeType}    $x");
    ///var与dynamic的区别就是var所定义的变量在编译期间可以进行检测,但是var也是属性动态数据类型,在初次定义的时候可以不用声明数据类型,进行自动类型推导,但是在初次定义后,赋值其他数据类型
    ///就会编译报错
    var y="xiaoming";
    print(y.runtimeType);
    print(y);
    //y=123;会出现编译报错
    ///object是dart对象的基类,所以通过object定义的变量就会变成一个对象而不再是变量
    Object o1='111';
    print('${o1.runtimeType}  $o1');
  }

然后顺便安利下“熊喵先生”这位flutter的文章写得真的很到位,各位看官可以去看下,链接如下:
https://juejin.cn/post/6844903981827751949#heading-15
好啦,我继续去学习啦!!祝大家新的一年天天向上!!健健康康

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容