Dart从入门到入土【持续更新】

目录

Windows系统Dart环境搭建

Main方法

基本数据类型string和int定义方式

定义const常量和final常量

Dart 类型(数值、字符串、布尔、List集合、Maps)

Dart 类型:数值

Dart 类型:字符串 

Dart 类型:布尔

Dart 类型:List集合

Dart 类型:Maps

Dart 类型判断

Dart 运算符、表达式、类型转换

Dart运算符:关系运算符

Dart运算符:算术运算符

Dart运算符:赋值运算符

Dart运算符:逻辑运算符

Dart表达式:条件表达式

Dart类型转换

Dart中的++和--

Dart中for循环以及循环遍历List

Dart中while do...while

Dart中break和continue

Dart中的List、Set、Map、forEach map where any every

Dart中的List常见属性和常见方法

Dart中Set的作用及用法

Dart中Map的常用属性和常用方法

Dart中forEach map where any every使用方法


Windows系统Dart环境搭建

Dart SDK下载地址: Dart for Windows

上稳定版本

下正式版本

下载下来一直点下一步即可安装成功。

如何看自己有没有安装成功? Win+R打开cmd窗口,输入dart --version 指令 如果返回Dart SDK版本号就意味着已经成功安装。没出现版本号的换稳定版本重新安装即可。

VsCode开发需要装Dart插件,dart项目文件后缀名以.dart结尾

运行项目:右击编辑代码区域-Run Code 或者快捷键:Crtl + Alt + N

Main方法

main() {
  print('hello world');
}


/* 表示main方法没有返回值 */
void main() {
  print('hello world');
}

 基本数据类型string和int定义方式

void main(){
  var str1 = 'hello world'; //字符串定义方式
  String str2 = '你好dart'; //字符串定义方式
  var num1 = 1314; //int类型定义方式
  int num2 = 1234; //int类型定义方式

  print(str1);
  print(str2);
  print(num1);
  print(num2);

  /* dart里面有类型校验 */
  var str3 = '';
  str3 = 1314; //错误 因为不是string类型
  print(str3);

  //定义的变量以英文开头且不能为if for类似的变量
  // var 2str = 'xxx'; //错误
  // var if = '13141314'; //错误

  /* 替换内容 */
  var str = 'this is a str';
  str = '你好 str'; //替换掉定义的内容
  print(str);

  int num = 1314;
  num = 6666; //替换掉定义的内容
  print(num);
}

定义const常量和final常量

void main() {
  // const常量
  const PI1 = 3.1415926;
  PI1 = 123.1234; //错误的写法 常量不可以修改
  print(PI1);

  // final 常量
  final PI2 = 3.1415926;
  PI2 = 123456.123456; //错误的写法 常量不可以修改
  print(PI2);

  final a = new DateTime.now(); //获取当前日期
  print(a);
}

Dart 类型(数值、字符串、布尔、List集合、Maps)

Dart 常见类型有:数值、字符串、布尔、List集合、Maps

 Dart 类型:数值

void main(){
  // int 必须是整形
  int a = 123;
  a = 45;

  // double 既可以是整形 也可以是浮点型
  double b = 23.5;
  b = 22;

  // 运算符
  // + - * / %
  var c = a + b;
  print(c); //67
}

Dart 类型:字符串 

void main() {
  // 字符串定义的几种方式
  var str1 = 'this is str1';
  var str2 = 'this is str2';
  print(str1);
  print(str2);

  String str1 = 'this is str1';
  String str2 = 'this is str2';
  print(str1);
  print(str2);

  //多行写法
  String str1 = '''
  this is str1
  this is str2
  this is str3
  ''';
  print(str1);

  String str1 = """
  this is str1
  this is str2
  this is str3
  """;
  print(str1);

  String str1 = '你好';
  String str2 = 'dart';
  print("$str1 $str2");
  print(str1 + " " + str2);
}

Dart 类型:布尔

void main() {
  // bool 值 true/false
  bool flag1 = true;

  print(flag1);

  bool flag2 = false;

  print(flag2);

  // 条件判断语句
  var flag = true;

  if (flag) {
    print('真');
  } else {
    print('假');
  }

/* dart不会做数据转换 */

  var a = 123;

  var b = '123';

  if (a == b) {
       print('a=b');
     } else {
        print('a!=b');
     }

  var a = 123;

  var b = 123;

  if (a == b) {
    print('a=b');
  } else {
    print('a!=b');
  }
}

 Dart 类型:List集合

void main() {
  // 第一种定义List的方式
  var li = ['张三', 20, true];
  print(li); //['张三', 20, true]
  print(li.length); //3
  print(li[0]); //张三
  print(li[1]); //20

  // 第二种定义List的方式 指定类型
  var li2 = <String>["张三", "李四"];
  print(li2);
  var li2 = <int>[18, 19];
  print(li2);

  // 第三种定义List的方式 增加数据,通过[]创建的集合它的容量是可以变化
  var li3 = [];
  print(li3);
  print(li3.length);
  li3.add("张三");
  li3.add("李四");
  li3.add(20);
  print(li3);
  print(li3.length);

  var li4 = ["张三", 20, true];
  li4.add("李四");
  li4.add(66);
  print(li4);

  // 第四种定义List的方式
  var li5 = new List(); //在新版本的dart里面没法使用这个方法了
  var li5 = List.filled(2, ''); //创建一个固定长度的集合
  print(li5);
  print(li5[0]);

  li5[0] = '张三'; //修改集合的内容
  li5[1] = '李四';
  print(li5); //[张三,李四]
  li5.add("王五"); //错误写法

  // 通过List.filled创建的集合长度是固定的
  var li5 = List.filled(2, '');
  print(li5.length);
  li5.length=0; //修改集合的长度 报错

  var li6 = <String>['张三', '李四'];
  print(li6);
  li6.length = 0; //可以改变的
  print(li6);

  var li7 = List<String>.filled(2, '张三');
  li7[1] = 'String';
  print(li7);
}

Dart 类型:Maps

void main() {
  //第一种定义Maps的方式

  var person = {
    "name": "张三",
    "age": 20,
    "work": ['程序员', '外卖员', '按摩技师']
  };
  print(person);
  print(person['name']);
  print(person['age']);
  print(person['work']);

  //第二种定义Maps的方式

  var p = new Map();
  p['name'] = "李四";
  p['age'] = 20;
  p['work'] = ['程序员', '外卖员'];
  print(p);
  print(p['age']);
}

Dart 类型判断

void main() {
  var str = 123;
  if (str is String) {
    print('它是String类型');
  } else if (str is int) {
    print('它是int类型');
  } else {
    print('它是其它类型');
  }
}

Dart 运算符、表达式、类型转换

Dart运算符:关系运算符、算数运算符、赋值运算符、逻辑运算符

Dart表达式:条件表达式

Dart类型转换

Dart运算符:关系运算符

void main() {
  // == != > < >= <=
  int a = 5;
  int b = 4;
  print(a == b); //判断是否相等
  print(a != b); //判断是否不等
  print(a > b); //判断是否大于
  print(a < b); //判断是否小于
  print(a >= b); //判断是否大于等于
  print(a <= b); //判断是否小于等于

  if (a > 5) {
    print('a大于b');
  } else {
    print('a小于b');
  }
}

 Dart运算符:算术运算符

void main() {
  int a = 13;

  int b = 14;

  print(a + b); //加
  print(a - b); //减
  print(a * b); //乘
  print(a / b); //除
  print(a % b); //取余
  print(a ~/ b); //取整

  var c = a * b;

  print(c);
}

Dart运算符:赋值运算符

void main() {
  // 基础赋值 = ??=
  int a = 10;
  int b = 20;
  int c = a + b; //从右往左

  b??=23; //表示如果b为空的话就把23赋值给b
  int b = 6;
  b ??= 23;
  print(b);

  int? b;
  b ??= 23;
  print(b);

  // 复合赋值运算符 += -= *= /= %= ~/=

  var a = 12;
  a = a + 10;
  print(a);

  var a = 13;
  a += 10; //表示 a = a + 10
  print(a);

  var a = 3;
  a *= 4; //表示 a = a * 4
  print(a);
}

Dart运算符:逻辑运算符

void main() {
  bool flag = true;
  print(!flag); //取反

  // &&并且:全部为true的话值未true 否则值未false
  bool a = true;
  bool b = true;
  print(a && b);

  // ||或者:全为false的话值为false 否则值为true
  bool a = false;
  bool b = true;
  print(a || b);

  //如果一个人的年龄是20 并且 sex女的话我们打印这个人
  int age = 20;
  String sex = '女';
  if (age == 20 && sex == '女') {
    print('这个$sex人$age岁');
  } else {
    print('不打印');
  }

  //如果一个人的年龄是20 或者 sex女的话我们打印这个人
  int age = 23;
  String sex = '女';
  if (age == 20 || sex == '女') {
    print('这个$sex人$age岁');
  } else {
    print('不打印');
  }
}

Dart表达式:条件表达式

void main() {
  bool flag = true;
  if (flag) {
    print('true');
  } else {
    print('false');
  }

  // 判断一个人的成绩 如果大于60 显示及格  如果大于70 显示良好 如果大于90 显示优秀
  var score = 41;
  if (score > 90) {
    print('优秀');
  } else if (score > 70) {
    print('良好');
  } else if (score >= 60) {
    print('及格');
  } else {
    print('不及格');
  }

  // switch case
  var sex = '男';
  switch (sex) {
    case "男":
      print('性别是男');
      break;
    case "女":
      print('性别是女');
      break;
    default:
      print('传入参数错误');
      break;
  }

  // 三目运算符
  var flag = true;
  var c;
  if (flag) {
    c = '我是true';
  } else {
    c = '我是false';
  }
  print(c);

  bool flag = true;
  String c = flag ? '我是true' : '我是false';
  print(c);

  // ??运算符
  var a;
  var b = a ?? 10;
  print(b);

  var a = 22;
  var b = a ?? 10;
  print(b);
}

Dart类型转换

void main() {
  // String转换int
  String str = '123';
  var num = int.parse(str);
  print(num is int);


  // String转换double
  String str = '123.1';
  var num = double.parse(str);
  print(num is double);

  String price = '';
  var num = double.parse(price);
  print(num);
  print(num is double);

  String price = '10';
  try {
    var num = double.parse(price);
    print(num);
  } catch (err) {
    print(0);
  }

  var num = 12;
  var str = num.toString();
  print(str is String);


  // 其他类型转换成Bololeans类型
  // isEmpty:判断字符串是否为空
  var str = '';
  if (str.isEmpty) {
    print('str空');
  } else {
    print('str不为空');
  }

  var num = 123;
  if (num == 0) {
    print('0');
  } else {
    print('非0');
  }

  var num;
  if (num == null) {
    print('空');
  } else {
    print('非空');
  }
  var num = 0 / 0;
  if (num.isNaN) {
    print('NaN');
  }
}

Dart中的++和--

void main() {
  /* 
    ++ --  表示自增 自减 1 
    在复制运算里面 如果++ -- 写在前面 这时候先运算再赋值
    如果 
    ++ -- 写在后面 这时候先赋值 后运算
  */

  var a = 10;
  a++; // a = a + 1;
  print(a);

  var a = 10;
  a--; // a = a - 1;
  print(a);

  var a = 10;
  var b = a++;
  print(a); //11
  print(b); //10

  var a = 10;
  var b = ++a;
  print(a); //11
  print(b); //11

  var a = 10;
  var b = --a;
  print(a); //9
  print(b); //9

  var a = 10;
  var b = a--;
  print(a); //9
  print(b); //10
}

Dart中for循环以及循环遍历List

// 第一步,声明变量 int i = 1;
// 第二步,判断i <= 100
// 第三步,print(i)
// 第四步,i++
// 第五步,从第二步再来,直到判断为false

void main() {
  // for 基本语法
  for (int i = 1; i <= 10; i++) {
    print(i);
  }

  // 1 打印0-50所有的偶数
  for (int i = 0; i <= 50; i++) {
    if (i % 2 == 0) {
      print(i);
    }
  }

  // 2 求1+2+3+4+...100的和
  var sum = 0;
  for (var i = 0; i <= 100; i++) {
    sum += i;
  }
  print(sum);
  /* 
  sum = 0 + 1
  sum = 0 + 1 + 2;
  sum = 0 + 1 + 2 + 3 + ... + 100;
  */


  // 3 计算5的阶乘 (1*2*3*4*5 n的阶乘1*2....*n)
  var sum = 1;
  for (var i = 1; i <= 5; i++) {
    sum *= i;
  }
  print(sum);
  /* 
  sum = 1 * 1
  sum = 1 * 2;
  sum = 1 * 2 * 3;
  sum = 1 * 2 * 3 * 4;
  sum = 1 * 2 * 3 * 4 * 5;
  */


  // 4 打印List['张三','李四','王五']里面的内容
  List list = ['张三', '李四', '王五'];
  for (var i = 0; i <= list.length; i++) {
    print(list[i]);
  }

  // 5 打印List
  List list = [
    {"title": "新闻111"},
    {"title": "新闻222"},
    {"title": "新闻333"}
  ];
  for (var i = 0; i <= list.length; i++) {
    print(list[i]['title']);
  }

  // 6 定义一个二维数组 打印里面的内容
  List list = [
    {
      "cate": "国内",
      "news": [
        {"title": "国内新闻1"},
        {"title": "国内新闻2"},
        {"title": "国内新闻3"},
      ]
    },
    {
      "cate": "国外",
      "news": [
        {"title": "国外新闻1"},
        {"title": "国外新闻2"},
        {"title": "国外新闻3"},
      ]
    },
  ];
  for (var i = 0; i < list.length; i++) {
    print(list[i]['cate']);
    print('--------');
    for (var j = 0; j < list[i]['news'].length; j++) {
      print(list[i]["news"][j]["title"]);
    }
  }
}

Dart中while do...while

/*
	语法格式:
		
		while(表达式/循环条件){			
			
		}			
    		
		do{
			语句/循环体
			
		}while(表达式/循环条件);
		
				

		注意: 1、最后的分号不要忘记
			    2、循环条件中使用的变量需要经过初始化
		      3、循环体中,应有结束循环的条件,否则会造成死循环。
*/

void main() {
  // 错误写法 死循环
  int i = 1;
  while (i <= 10) {
    print(i);
  }
  // 正确写法
  int i = 1;
  while (i <= 10) {
    print(i);
    i++;
  }

  // 1 求1-100的和
  int i = 1;
  var sum = 0;
  while (i <= 100) {
    sum += i;
    i++;
  }
  print(sum);

  int i = 1;
  var sum = 0;
  do {
    sum += i;
    i++;
  } while (i <= 100);
  print(sum);
}

Dart中break和continue

/*
			break语句功能:
          1、在switch语句中使流程跳出switch结构。
          2、在循环语句中使流程跳出当前循环,遇到break 循环终止,后面代码也不会执行
          
          强调:
          1、如果在循环中已经执行了break语句,就不会执行循环体中位于break后的语句。
          2、在多层循环中,一个break语句只能向外跳出一层

        break可以用在switch case中 也可以用在 for 循环和 while循环中

      continue语句的功能:
			  
        【注】只能在循环语句中使用,使本次循环结束,即跳过循环体重下面尚未执行的语句,接着进行下次的是否执行循环的判断。

        continue可以用在for循环以及 while循环中,但是不建议用在while循环中,不小心容易死循环


*/


main() {
    for(var i=1;i<=10;i++){
      print(i);
    }

    //1、如果i等于4的话跳过
    for(var i=1;i<=10;i++){
      if(i==4){
        continue;  /*跳过当前循环体 然后循环还会继续执行*/
      }
      print(i);
    }
  


    //2、如果 i等于4的话跳出循环
    for(var i=1;i<=10;i++){
      if(i==4){
        break;  /*跳出循环体*/
      }
      print(i);
    }
      

    //3、break语句只能向外跳出一层
    	 for(var i=0;i<5;i++){	 	           	
			  	print('外层---$i');
          for(var j=0;j<3;j++){            
            if(j==1){
              break;
            }
            print('里层$j');	
          }	
			 }



  //4、while循环 break跳出循环
  var i=1;
  while(i<=10){
    if(i==4){
      break;
    }
    print(i);
    i++;
  }

  var sex="男";
  switch (sex) {
    case "男":
      print('男');
      break;
    case "女":
      print('男');
      break;
    default:
  }
    
}

Dart中的List、Set、Map、forEach map where any every

介绍Dart中List、Set、Map以及forEach where any every的常用属性和方法

Dart中的List常见属性和常见方法

/*
List里面常用的属性和方法:

    常用属性:
        length          长度
        reversed        翻转
        isEmpty         是否为空
        isNotEmpty      是否不为空
    常用方法:  
        add         增加
        addAll      拼接数组
        indexOf     查找  传入具体值
        remove      删除  传入具体值
        removeAt    删除  传入索引值
        fillRange   修改  传入索引值和修改内容  
        insert(index,value);            指定位置插入    
        insertAll(index,list)           指定位置插入List
        toList()    其他类型转换成List  
        join()      List转换成字符串
        split()     字符串转化成List
        forEach   
        map
        where
        any
        every

*/


void main(){
  List myList=['香蕉','苹果','西瓜'];
  print(myList[1]);

  var list=new List();  //新版本没法使用
  list.add('111');
  list.add('222');
  print(list);


//List里面的属性:
    List myList=['香蕉','苹果','西瓜'];
    print(myList.length);
    print(myList.isEmpty);
    print(myList.isNotEmpty);
    print(myList.reversed);  //对列表倒序排序
    var newMyList=myList.reversed.toList();
    print(newMyList);

//List里面的方法:
    List myList=['香蕉','苹果','西瓜'];
    myList.add('桃子');   //增加数据  增加一个
    myList.addAll(['桃子','葡萄']);  //拼接数组
    print(myList);
    print(myList.indexOf('苹x果'));    //indexOf查找数据 查找不到返回-1  查找到返回索引值


    myList.remove('西瓜');
    myList.removeAt(1);
    print(myList);

    List myList=['香蕉','苹果','西瓜'];
    myList.fillRange(1, 2,'aaa');  //把“苹果”修改为”aaa“
    myList.fillRange(1, 3,'aaa');  //把”苹果“和”西瓜“都修改为”aaa“

    myList.insert(1,'aaa');      //插入  一个
    myList.insertAll(1, ['aaa','bbb']);  //插入 多个
    print(myList);

    List myList=['香蕉','苹果','西瓜'];
    var str=myList.join('-');   //list转换成字符串
    print(str);
    print(str is String);  //true

    var str='香蕉-苹果-西瓜';
    var list=str.split('-');
    print(list);
    print(list is List);

}

Dart中Set的作用及用法

//Set 

//用它最主要的功能就是去除数组重复内容

//Set是没有顺序且不能重复的集合,所以不能通过索引去获取值

//Set出来的数据是() 使用toList转换成[]

void main(){
  var s=new Set();
  s.add('香蕉');
  s.add('苹果');
  s.add('苹果');
  print(s);   //{香蕉, 苹果}
  print(s.toList()); 


  List myList=['香蕉','苹果','西瓜','香蕉','苹果','香蕉','苹果'];
  var s=new Set();
  s.addAll(myList);
  print(s);
  print(s.toList());
  
}

Dart中Map的常用属性和常用方法

/*
  映射(Maps)是无序的键值对:

    常用属性:
        keys            获取所有的key值
        values          获取所有的value值
        isEmpty         是否为空
        isNotEmpty      是否不为空
    常用方法:
        remove(key)     删除指定key的数据
        addAll({...})   合并映射  给映射内增加属性
        containsValue   查看映射内的值  返回true/false
        forEach   
        map
        where
        any
        every


*/

void main(){
  Map person={
    "name":"张三",
    "age":20
  };

  var m=new Map();
  m["name"]="李四";  
  print(person);
  print(m);

//常用属性:
    Map person={
      "name":"张三",
      "age":20,
      "sex":"男"
    };
    print(person.keys.toList());
    print(person.values.toList());
    print(person.isEmpty);
    print(person.isNotEmpty);


//常用方法:
    Map person={
      "name":"张三",
      "age":20,
      "sex":"男"
    };
    person.addAll({
      "work":['敲代码','送外卖'],
      "height":160
    });
    print(person);

    person.remove("sex");
    print(person);
    print(person.containsValue('张三'));
}

Dart中forEach map where any every使用方法

/*
        forEach     
        map         
        where       
        any
        every
*/
void main(){
      List myList=['香蕉','苹果','西瓜'];
      for(var i=0;i<myList.length;i++){
        print(myList[i]);
      }

      for(var item in myList){
        print(item);
      }

      myList.forEach((value){
          print("$value");
      });

      List myList=[1,3,4];
      List newList=new List();
      for(var i=0;i<myList.length;i++){
        newList.add(myList[i]*2);
      }
      print(newList);

      List myList=[1,3,4];      
      var newList=myList.map((value){
          return value*2;
      });
      print(newList.toList());

      List myList=[1,3,4,5,7,8,9];
      var newList=myList.where((value){
          return value>5;
      });
      print(newList.toList());

      List myList=[1,3,4,5,7,8,9];
      var f=myList.any((value){   //只要集合里面有满足条件的就返回true
          return value>5;
      });
      print(f);

      List myList=[1,3,4,5,7,8,9];
      var f=myList.every((value){   //每一个都满足条件返回true  否则返回false
          return value>5;
      });
      print(f);


      // set
      var s=new Set();
      s.addAll([1,222,333]);
      s.forEach((value)=>print(value));



      //map
       Map person={
          "name":"张三",
          "age":20
        };

        person.forEach((key,value){            
            print("$key---$value");
        });
}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Flutter 是一种跨平台的移动应用开发框架,能够快速构建高效、美观的应用程序。下面我将介绍从入门到进阶的学习路径,并给出实战携程网应用程序的资料。 1. 入门阶段: - 学习Dart语言基础:DartFlutter 的编程语言,掌握其基本语法和特性非常重要。 - 安装Flutter SDK:根据官方指南下载并配置好Flutter开发环境。 - 理解Flutter基础概念:学习Flutter的基本概念,如Widget、State、BuildContext等。 - 创建第一个Flutter应用:通过编写一个简单的计数器应用程序加深对Flutter开发流程的理解。 2. 进阶阶段: - 深入学习Widget:掌握Flutter中的各种Widget,了解它们的层次结构以及常用属性和方法。 - 路由和导航组件:学习如何实现应用程序之间的页面跳转和导航功能。 - 网络请求与数据处理:学习如何使用Flutter的网络请求库,并结合携程网的API接口获取数据。 - 状态管理:掌握不同的状态管理方案,例如Provider、GetX等,以便更好地管理应用程序的复杂状态。 - 自定义控件和动画:学习如何自定义Flutter控件,以及如何使用动画使应用程序更加生动和流畅。 实战携程网app资料: - Flutter官方文档:提供了全面的Flutter开发指南和示例代码,可在Flutter官方网站找到。 - Github上的开源项目:可以在Github上搜索到一些开源的Flutter项目,其中可能包含实现携程网app功能的示例代码。 - 携程网提供的开放API:携程网提供了一些开放接口供开发者使用,可通过API文档了解接口的使用方法,然后在Flutter中进行集成。 通过系统学习和实践,从入门到进阶,您将能够掌握Flutter开发技术,并有能力构建出类似携程网的应用程序。加油!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值