美文网首页
Flutter Dart 语法笔记

Flutter Dart 语法笔记

作者: calary | 来源:发表于2019-08-19 14:13 被阅读0次

一、前言

Dart 作为开发Flutter的语言,在平时使用中会碰到一些比较容易遗忘的用法,这里对平时使用中遇到的用法做一个笔记,用来不清楚时查看。

二、用法笔记

1、特殊运算符((?.)、(??=)、(??))

Dart中的这几个运算符主要用来简化处理变量实例缺失(为null)的情况。

  • ?.运算符 上面Person类中有printInfo()方法,p 是 Person的一个可能为null的实例。那么p调用成员方法的安全代码,可以简化写为p?.printInfo(),表示p为null的时候跳过,避免抛出异常。

  • ??运算符 如果a不为null则返回a的值,否则返回b的值。在java或者C++中我们通过三元表达式 (a!=null) ? a : b 来实现。在Dart中直接可以 a ?? b。

  • ??=运算符 如果a为null,则给a赋值value,否则跳过。a ??= value。

为了方便说明,我们定义一个类如下

class Person {
  String name;
  int age;
  Person(this.name, this.age);
  void printInfo() {
    print('name is $name, age is $age');
  }
}

void main() {
  Person p; // p为null
  p?.printInfo(); // 避免为 null 抛出异常,可以使用 ?. 进行简写

  Person p1 = Person('Dart', 2);
  var a;
  var b = 'Java';
  p1.name = a ?? b;  // 如果a不为null,则值为a,否则为b
  print('name:${p1.name}');// 打印结果,name:Java

  a ??= 'C++'; // 如果a为null,则给a赋值
  b ??= 'C#';
  print('a:$a,b:$b'); // 打印结果,a:C++,b:Java
}

2、数字处理

  • 2.1 数字取整

    • floor(): 舍得形式,
    • round(): 四舍五入形式
    • ceil(): 入的形式
  • 2.2 字符串转数字

    • int.parse(String str): 字符串转int
    • double.parse(String str): 字符串转double
  • 数字转字符串

    • toStringAsFixed(int num):保留几位小数
    • toStringAsPrecision(int num):保留几位数,包括整数部分
void main() {
  double pi = 3.14;
  int floor_pi = pi.floor(); // 舍
  int round_pi = pi.round(); // 四舍五入
  int ceil_pi = pi.ceil();   // 入

  String str = '5';
  int i = int.parse(str); // 字符串转int
  double j = double.parse(str); // 字符串转double

  double pi_l = 3.1415926;
  String st = pi_l.toStringAsFixed(2); // 保留两位小数
  String st2 = pi_l.toStringAsPrecision(5); // 保留几位数,包括整数部分

  print('''
      floor(舍): $floor_pi, 
      round(四舍五入): $round_pi,
      ceil(入): $ceil_pi;
      字符串转int:$i
      字符串转double: $j
      保留两位小数: $st
      保留5为数:$st2
  ''');
 /** 输出结果
     floor(舍): 3, 
      round(四舍五入): 3,
      ceil(入): 4;
      字符串转int:5
      字符串转double: 5.0
      保留两位小数: 3.14
      保留5为数:3.1416
*/
}

相关文章

网友评论

      本文标题:Flutter Dart 语法笔记

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