美文网首页
Dart 语法

Dart 语法

作者: Abner_XuanYuan | 来源:发表于2023-08-09 09:58 被阅读0次

1、变量

/// 定义基本类型 , 使用 var 关键字进行类型定义并初始化时,后续赋值只能是相同类型。
/// 使用 var 定义,不初始化 , 则后续可以任意类型赋值, 最终类型是 dynamic 类型,dynamic 类型不会检测成员,Object 定义的变量,会检测对象成员。
var variable = '12’;
/// 使用确定类型定义变量 , String 类型 , 使用确定类型赋值必须是相同类型
String name = 'zeno'; 

2、常量

/// const:声明的常量在编译时确定,不可以更改,必须初始化,特性会传递到子元素。(多个地方对象相同时,内存中只保留一份数据)
const PI = 3.1454567; 

///final:声明常量在运行时确定,不可以更改,可以不初始化,但只能赋值一次。
final DE = 123231313; 

3、运算符

运算符
说明:
1、上表中运算符优先级从上往下依次降低。
2、判断两个对象是否完全相等,可以使用 identical() 函数。
3、??= 只有当被赋值的变量为 null 时才会赋值给它。
4、复合赋值运算符:=、+=、-=、*=、/=、%=、~/=、>>=、<<=、&=、^=、|=。
5、级联运算符(..)可以实现对同一个对像进行一系列的操作。除了调用函数,还可以访问同一对象上的字段属性。这通常可以节省创建临时变量的步骤,同时编写出更流畅的代码。可以嵌套使用。

4、流程控制

if-else、for、while、do-while、break、continue、switch-case、assert、try-catch、throw。

5、集合

1、List:
var ls = List(); // 不推荐
var ls = <String>[]; // 推荐

Ls2.add(‘one’);
Ls2.addAll([‘1’,’2’,’3’]);
Ls2.add(‘two’);
Ls2.remove(‘one’);

//创建固定长度的 list
 List l1 = List.filled(3, "12345");  //创建长度为 3,内容均为 12345 的 list
  // l1.add("23456");
  // l1.removeLast();
  l1[0] = 99999;
注:该方式创建的 list 不能修改 list 的长度,可以修改 list 的内容
2、Map:
var personInfo = Map<String,Object>(); // 不推荐
var personInfo = <String,Object>{}; // 推荐

personInfo[‘name’] = ‘zeno’;
personInfo[‘age’] = 18;
3、枚举:

枚举类型是一种特殊的类,通常用来表示相同类型的一组常量。使用关键字 enum 定义枚举。

enum ResponseState{
    Success,
    Error,
    Failure
}

注:
1、枚举的每一个值都有一个 index 属性,index 从 0 开始计数。
2、使用枚举的 values 常量,获取所有枚举值列表( list )。
3、枚举不能被继承,不能创建实例;枚举不能被子类化,混合或实现。

4、时间:

DateTime 对象代表某个时刻。时区是 UTC 或者本地时区。

/// 获取当前时间 2019-03-04 14:48:28.948690
DateTime.now();

/// 创建一个指定年月日的DateTime对象, 后面可以继续添加时分秒毫秒等
/// 2019-03-03 00:00:00.000
DateTime(2019,3,3);

/// 解析日期字符串
DateTime.parse(‘2019-03-03 20:30:00’);

/// 解析时间戳
DateTime.fromMillisecondsSinceEpoch(1551616200000);

6、函数

//函数定义方式
  返回值类型  方法名(参数1,参数1,参数3....){
    //操作
    return 返回值类型
  }
1、可选参数
String printUserInfo(String userName, [int? age, String? sex]) {
  if (age != null && sex != null) {
    return "用户名: $userName -- 年龄: $age -- 性别: $sex";
  } else if (sex != null && age == null) {
    return "用户名: $userName -- 年龄保密 -- 性别: $sex";
  } else if (age != null && sex == null) {
    return "用户名: $userName -- 年龄: $age -- 性别保密";
  } else {
    return "用户名: $userName -- 年龄保密 -- 性别保密";
  }
}
//使用
void main() {
  print(printUserInfo("哈哈"));
  print(printUserInfo("嘻嘻", 22));
  print(printUserInfo("略略", 18, null));
  print(printUserInfo("咯咯", null, "女"));
  print(printUserInfo("叽叽", 23, "男"));
}
2、默认参数
String printUserInfo(String userName, [int? age = 10, String? sex = "男"]) {
  if (age != null && sex != null) {
    return "用户名: $userName -- 年龄: $age -- 性别: $sex";
  } else if (sex != null && age == null) {
    return "用户名: $userName -- 年龄保密 -- 性别: $sex";
  } else if (age != null && sex == null) {
    return "用户名: $userName -- 年龄: $age -- 性别保密";
  } else {
    return "用户名: $userName -- 年龄保密 -- 性别保密";
  }
}
//使用
void main() {
  print(printUserInfo("哈哈"));
  print(printUserInfo("嘻嘻", 22));
  print(printUserInfo("略略", 18, null));
  print(printUserInfo("咯咯", null, "女"));
  print(printUserInfo("叽叽", 23, "男"));
}
3、命名参数
String printUserInfo(String userName, {int? age, String? sex = "男"}) {
  if (age != null && sex != null) {
    return "用户名: $userName -- 年龄: $age -- 性别: $sex";
  } else if (sex != null && age == null) {
    return "用户名: $userName -- 年龄保密 -- 性别: $sex";
  } else if (age != null && sex == null) {
    return "用户名: $userName -- 年龄: $age -- 性别保密";
  } else {
    return "用户名: $userName -- 年龄保密 -- 性别保密";
  }
}
//使用
void main() {
  print(printUserInfo("哈哈"));
  print(printUserInfo("嘻嘻", age: 22));
  print(printUserInfo("略略", age: 18, sex: null));
  print(printUserInfo("咯咯", age: null, sex: "女"));
  print(printUserInfo("叽叽", age: 23, sex: "男"));
}
4、匿名方法
var unnameFuc = (int age, String name) {
  print("123456 " + "age: $age " + "name: $name");
};
//使用
void main() {
  unnameFuc(18,"哈哈");
}
5、自执行方法
//该方法会自动执行
void main() {

//方式一
 (() {
    print("这是个自执行方法");
  })();

//方式二
 ((str) {
    print("str 是形参,内容是: $str");
    print("这是个自执行方法");
  })("这个是传入的参数");
}
6、闭包
void main() {
  //闭包
  fn() {
    var a = 111;
    return () {
      a++;
      print(a);
    };
  }

  var b = fn();
  b();
  b();
  b();
  b();
  b();
}

相关文章

  • dart语法7-泛型

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法8-库

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法10-生成器

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法9-异步

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法11

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法2-内置类型

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法1

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法3-函数

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法4-操作符

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法6-类

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

网友评论

      本文标题:Dart 语法

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