Flutter2-Dart语法

变量

/**
 * Dart中用var生命变量,可以赋值不同类型
 * Type:dynamic
 * 一开始没有初始值的变量可以赋值任意类型,一开始有初始值的变量,只能赋值同类型
 * */
var a;
a = "asd";
print(a);
a = 6;
print(a);
a = [1,2];
print(a);

var b = 66;
print(b);

final变量

/**
 * final:使用final声明的只能赋值一次的变量
 * 可以在命名时赋值,也可以命名不赋值,其他地方赋值,但是只能赋值一次!
 * 没有被赋值过的final变量是不能被使用的
 * 它是最终变量
 * */
final c;
c = 2;
print("c : $c");

常量

/**
 * const:常量只能在声明的时候赋值,而且必须在声明时赋值
 * */
const d = 5;
print("d : $d");

Dart的数据类型

  1. 数值型Number: int & double
  2. 字符串
  3. bool
  4. 列表 - List
  5. 键值对(字典) - Map

  • 数值类型
  /**
   * num:可以是int也可以是double
   * */
  num a = 10;
  a = 1.5;

  int b = 20;
  print(b.isEven); // 偶数
  print(b.isOdd); // 奇数

  double c = 30.0;

  // 算数运算符 + - * / %(取模) ~/(取整)
  print(a ~/ b); // 相当于a/b取整

  // 类型转换
  print(a.toInt().isOdd);
  print(b.toDouble());
  • 字符串
/**
   * Dart中的字符串
   * 使用单引号和双引号创建
   * 三个引号或双引号可以创建多行字符串
   * */

  var a = 'James';
  var b = "Rose";
  print(a+b);

  String str = "Hello";
  String str1 = "World";

  /**
   * Apple
      Orange
      Banana
      Cherry
   * 结果和下面写的一样,前面会带空格
   * */
  String str2 = '''Apple
  Orange
  Banana
  Cherry''';
  print(str2);

  /**
   * 取字符串第n个字符
   * e
   * */
  print(str[1]);

  /**
   * 字符串拼接
   * HelloWorld
   * */
  print(str+str1);

  /**
   * 字符串重复翻倍
   * HelloHelloHelloHelloHello
   * */
  print(str * 5);

  /**
   * 格式化字符串
   * 表达式需要花括号括起来,单个变量直接美元符加变量
   * */
  int aa = 10;
  int bb = 20;
  int cc = aa + bb;
  print("a + b = ${aa + bb}");
  print("a + b = $cc");

  /**
   * 如果不需要字符串中的转义字符,字符串前面加r
   * apple
      orange
   * apple\norange
   * */
  String str3 = "apple\norange";
  String str4 = r"apple\norange";
  print(str3);
  print(str4);

  /**
   * 字符串长度
   * */
  print(str3.length);
  • list - 数组
  /**
   * Dart中的列表,可以存放不同的数据类型
   * 创建可变list  var list = [1, 2, 3];
   * 创建不可变list  var list = const [1, 2, 3];
   * */

  var list1 = [1, 2, 3, 'sj'];
  print(list1);
  print(list1[3]);
  list1[3] = 4;
  print(list1[3]);

  var list2 = const [1, 2];

  /**
   * 获取数组长度
   * */
  var list3 = ["red", 1];
  print(list3.length);

  /**
   * 添加元素
   * 如果数组原来是同类型数据,添加只能是同类型数据
   * 如果原来有不同类型数据,可随便添加什么类型
   * */
  list3.add([1]);
  print(list3);

  /**
   * 插入元素
   * 插入元素类型规则同添加元素
   * */
  list3.insert(1, "yello");
  print(list3);

  /**
   * 删除元素
   * */
  list3.remove("red");
  print(list3);

  list3.removeAt(1);
  print(list3);

  list3.clear();
  print(list3);

  /**
   * 数组排序
   * */
  var list4 = [5, 3, 2, 7, 9, 1];
  list4.sort();
  print(list4);

  /**
   * 数组截取
   * */
  print(list4.sublist(2, 4));
  • map - 字典
/**
   * Dart中的map,键值对
   * 创建可变的Map: var json = {'one' : 'red', 'two' : 'green'};
   * 创建不可变的Map: var json = const {'one' : 'red', 'two' : 'green'};
   * */
  var json1 = {'one' : 1, 2 : 'green'};
  print(json1);
  print(json1[2]);
  json1['three'] = 'yello';
  print(json1);

  /**
   * Map的长度
   * 所有的key
   * 所有的value
   * */
  print(json1.length);
  print(json1.keys);
  print(json1.values);

  /**
   * 数组可以直接简单转Map
   * */
  var list = ['red', 'green', 'blue'];
  print(list.asMap());

Dart的运算符

  1. 赋值运算 ??=
  2. 条件表达式 ??

  /**
   * ??=
   * 如果a=nil 把a赋值
   * 如果a不为nil,则不赋值
   * nil不是0,a=0后续也不赋值
   * */
  var a;
  a ??= 10;
  print(a);
  a ??= 5;
  print(a);

  /**
   * ??
   * 如果a为nil,结果为b
   * 如果a不为nil,结果为a
   * */
  var b = 6;
  print(a ?? b);

Dart的方法

  1. Dart中的方法也是对象
  2. 方法的返回值和参数可以省略
  3. 当方法的执行语句只有一句的时候,可以使用箭头函数 => 表达式
  4. 可选参数:传递参数的时候必须带上形参的名字,可选参数的顺序随便
void function() => print(5);

int sum(int a, int b) {
  return a + b;
}

// 可以写成下面方法,但是不建议这么写
sum1(a, b) {
  return a + b;
}

// 箭头函数是return,可以省去return
int sum2(int a, int b) => a + b;

/// 可选参数不能直接写int,因为报错,int不能为null。
/// 可以使用可选类型int?
/// 可选参数可以传1个,2个,3个....随便几个都可以且前后位置随意
sum3(int a, {int? b, var c}) {
  b ??= 0;
  c ??= 0;
  return a + b + c;
}

/// 可选参数可以设置默认值
sum4(int a, {int b = 5, int c = 0}) {
  return a + b + c;
}

/// 按顺序的可选参数
/// 可选参数必须按顺序,按位置
sum5(int a, [int b = 5, int c = 0]) {
  return a + b + c;
}
  1. 函数作为参数传递
void main() {
  var hello = printHello;
  hello();

  var list = [1, 2, 3, 4];
  // list.forEach(print);

  forEachDemo(list, printElement);
}

int index = 0;
printElement(var a) {
  print('元素$index : $a');
  index++;
}

forEachDemo(List list, void func(var element)) {
  for (var e in list) func(e);
}

  1. 匿名方法:没有方法名的方法
  var func = () {
    print('这是一个匿名方法');
  };
  func();

/// 立即执行方法、函数
  () {
    print('这是个立即执行方法');
  }();

/// 匿名方法作为参数
var i = 0;
  forEachDemo(list, (var a) {
    print('元素$i : $a');
    i++;
  });
  1. 闭包 closure
    定义在函数里面的函数就是闭包,闭包也是对象。
    闭包的作用:可以访问外部函数的局部变量。
void closureDemo() {
  var fun = funA();
  fun();
  fun();
  fun();
  fun();
}

funA() {
  var count = 0;
  return () => print(count++); // 这个匿名函数就是一个闭包
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容