美文网首页
Flutter Dart基础语法

Flutter Dart基础语法

作者: StevenHu_Sir | 来源:发表于2019-10-30 20:19 被阅读0次

    1.常量定义

    var number;
    number = 18;
    print('小明的年龄是 $number 岁');
    
    number = '20';  // 注意,变量类型是可以变的
    print(number);
    
    final c = 30;   // final修饰的变量只能被申明一次,不可修改
    print(c);
      
    const d = 50;
    print(d);
    

    一些常用的判断属性

    // 是否为负数, 大于0即为false
      print(m1.isNegative);
      print(0.isNegative);
    
      // 是否是有限的
      print(b32.isFinite);
      print(m1.isFinite);
    
      // 是否是无穷大或者无穷小
      print(m1.isInfinite);
    
      // 是否为偶数
      print(m1.isEven);
    
      // 是否为奇数
      print(m1.isOdd);
    
      // 是否是NaN值
      print(m1.isNaN);
      
      // 数据的符号,-1.0:值小于0、+1.0:值大于0、-0.0/0.0/NaN:值是其本身
      print(21.sign);  // 1
      print(-23.sign); // -1
      print(0.sign);   // 0
      print(-0.sign);  // 0
    

    int数字类型中常用的函数[绝对值 double 字符串]

    const m3 = 24;
      
      // 获取绝对值
      print(m3.abs());
    
      // 转成字符串
      print(m3.toString());
    
      // 幂次求模; m3的4次幂, 在对3求模
      print(m3.modPow(4, 3)); // 1
    
      // 返回m3和16的最大公约数
      print(m3.gcd(16));
      
      // 返回m3除以5的余数
      print(m3.remainder(5));
    
      // 转成double
      print(m3.toDouble());
      
      // 比较大小, 0:相同、1:大于、-1:小于
      print(m3.compareTo(30));
    

    2.操作符

    var a = 15;
      var b = 10;
    
      print(a + b);
      print(a - b);
      print(a * b);
      print(a / b);
      print(a ~/ b);
      print(a % b);
    
      print(a.isEven);    // 判断是否是偶数
      print(a.isOdd);     // 判断是否是奇数
      print(b.isEven);
      print(b.isOdd);
    
      var c = 1.23;
      
      print(c.floor());
      print(c.round());
      print(c.floor());
      print(c.ceil());
      print(c.toInt());
    

    3.字符串操作

    void main() {
      var str1 = 'Hello';                   // 单引号创建字符串
      var str2 = "Hello2";                  // 双引号创建字符串
      // 三引号创建多行字符串
      var str3 = '''你好
                  欢迎光临''';
      var str4 = r'双11真给力';
      var str5 = 'a|b|c|d|e|f|g';
      var str6 = '小学一年级';
    
      print(str1.toUpperCase());
      print(str2.length);
      print(str3.startsWith('你好'));//以..开始
      print(str4);
      print(str5.split('|'));//分割,切割
      print(str6.replaceAll('小', '大'));//替换字符串
      /*
      输出结果:
        I/flutter (22616): HELLO
        I/flutter (22616): 6
        I/flutter (22616): true
        I/flutter (22616): 双11真给力
        I/flutter (22616): [a, b, c, d, e, f, g]
        I/flutter (22616): 大学一年级
      */
    }
    

    4.list数组操作

    void test() {
        var list = ['one', 'two', 'three'];
    
        print('list.length:${list.length}'); // 获取长度
    
        list.add('four'); // 增加一个元素
        print(list);
    
        list.remove('two'); // 移除一个元素
        print(list);
    
        list.insert(1, 'two'); // 在指定位置插入一个元素
        print(list);
    
        print(list.indexOf('one')); // 获取元素所在位置
    
        print(list.sublist(2)); // 去除前2个元素,并返回一个新的List
    
        list.forEach(print); // 传入一个方法
    
        list.shuffle(); // 随机打乱List里元素的顺序
        print(list);
    
        print(list.asMap()); // 把list转换成map类型
    
        var companies = ['阿里巴巴', '今日头条', '爱奇艺'];
        print(!companies.isEmpty);
    
        // forEach 遍历
        companies.forEach((company) => print('$company在使用Flutter'));
    
        // .map 遍历
        var flutterCompanies = companies.map((company) => '$company在使用Flutter');
        flutterCompanies.forEach(print);
    
        // .map 合成数组
        var flutterCompaniesList =
            companies.map((company) => '$company在使用Flutter').toList();
        print(flutterCompaniesList);
        
        // 返回满足where条件的对象
        print(companies.where((company) => company == '阿里巴巴')); 
        
        // 只要存在一个即可
        print(companies.any((company) => company == '阿里巴巴')); 
        
        // 除了阿里巴巴,还有今日头条,爱奇艺
        print(companies.every((company) => company == '阿里巴巴')); 
    
        /*输出结果
        I/flutter (22616): list.length:3
        I/flutter (22616): [one, two, three, four]
        I/flutter (22616): [one, three, four]
        I/flutter (22616): [one, two, three, four]
        I/flutter (22616): 0
        I/flutter (22616): [three, four]
        I/flutter (22616): one
        I/flutter (22616): two
        I/flutter (22616): three
        I/flutter (22616): four
        I/flutter (22616): [two, four, one, three]
        I/flutter (22616): {0: two, 1: four, 2: one, 3: three}
        I/flutter (22616): true
        I/flutter (22616): 阿里巴巴在使用Flutter
        I/flutter (22616): 今日头条在使用Flutter
        I/flutter (22616): 爱奇艺在使用Flutter
        I/flutter (22616): 阿里巴巴在使用Flutter
        I/flutter (22616): 今日头条在使用Flutter
        I/flutter (22616): 爱奇艺在使用Flutter
        I/flutter (22616): [阿里巴巴在使用Flutter, 今日头条在使用Flutter, 爱奇艺在使用Flutter]
        I/flutter (22616): (阿里巴巴)
        I/flutter (22616): true
        I/flutter (22616): false
        */
      }
    

    5.运算符

    1.三目运算符

    • ?? 表示设置默认值
    • int a = 20; var b = a > 10 ? a : 0 ;

    2.~/ 除法, 返回一个整数结果:(取商)

    var a = 12~/ 7;
    print(a);//结果是1
    

    3.级联操作符

    类似链式调用
    例如

    ITTeacher()
          ..doWork()
          ..fixComputer();
    

    4.as , is 与 is!

    as : 判断属于某种类型
    is : 如果对象具有指定的类型,则为true
    is! : 如果对象具有指定的类型,则为false

    5.异常捕获

    try catch 连用

    try {
    // 捕获特定类型的异常}
    catch(e){
    // 报错信息打印
    print(e);
    }
    

    6.补占位符

    String padLeft(int width, [String padding = ' ']);
    String padRight(int width, [String padding = ' ']);
    

    在字符串前后补占位符
    参数一: 想要得到的字符串的位数
    参数二: 位数不足时, 补充的字符

    const str3 = '12';
    print(str3.padLeft(2, '0')); //12
    print(str3.padRight(3, '0')); // 120
    

    7.替换字符

    // 只能替换一次, 参数三为开始的索引值, 默认0
    String replaceFirst(Pattern from, String to, [int startIndex = 0]);
    
    // 替换所有符合条件的字符(字符串)
    String replaceAll(Pattern from, String replace);
    
    // 替换某一区间的字符
    String replaceRange(int start, int end, String replacement);
    
    // 示例如下:
    // 替换字符串
     const str4 = 'titanjun12--0123';
      print(str4.replaceFirst('t', 'T'));  // Titanjun12--0123
      print(str4.replaceFirst('12', '21', 10));   //titanjun12--0213
    
      // 全部替换
      print(str4.replaceAll('12', '21'));  //titanjun21--0213
      print(str4.replaceAll('t', 'T'));  //TiTanjun12--0123
    
      // 区间替换
      print(str4.replaceRange(0, 5, 'top'));  //topjun12--0123
    

    8.List相关操作

    8.1 filled

    • 通过指定长度创建一个固定长度的List,并初始化每个位置的值
    • 所有的元素都是相同的fill值。 如果指定的值是一个可变对象,那么List中所有的元素都是相同的对象,并且是可修改的
    var l2 = new List.filled(3, 'l');  //[l, l, l]
      var l3 = new List.filled(2, []);   // [[], []]
      l3[0].add(12);   
      print(l3);      // [[12], [12]]
    

    8.2 from

    • 创建一个包含所有elementsList
    • elementsIterator规定了元素的顺序。
    • growable为true(默认)时,构造函数返回一个可增长的List。 否则,它返回一个固定长度的List
    var l5 = new List.from([1, 2, 3, 4]);
    l5.add(5);
    print(l5);   // [1, 2, 3, 4, 5]
    
    // 下面的add方法会报错
    var l5 = new List.from([1, 2, 3, 4], growable: false);
    l5.add(5);
    

    8.3 generate

    • 生成一个包含所有值的List, 根据索引值创建元素
    • growablefalse时,创建的List是固定长度的
    var l4 = new List.generate(3, (int i) => i * i);
    l4.add(14);
    print(l4);
    // [0, 1, 4, 14]
    

    8.4 unmodifiable

    • 创建一个包含所有elements的,不可修改的List
    • 不可修改的List不能改变它的长度或元素
    • 如果元素本身是不可改变的,那么由此产生的List也是不可改变的
    var l6 = new List.unmodifiable([1, 2, 3, 4]);
    

    参考:
    https://www.jianshu.com/p/1070fb5bc25b

    相关文章

      网友评论

          本文标题:Flutter Dart基础语法

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