美文网首页
Flutter学习日记(一)--Dart基础知识

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

作者: jeffrey12138 | 来源:发表于2021-03-11 09:52 被阅读0次

    小伙伴,大家新年好,这是我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
    好啦,我继续去学习啦!!祝大家新的一年天天向上!!健健康康

    相关文章

      网友评论

          本文标题:Flutter学习日记(一)--Dart基础知识

          本文链接:https://www.haomeiwen.com/subject/rqsnqltx.html