IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Dart语言01-基础 -> 正文阅读

[移动开发]Dart语言01-基础

一、安装

1、下载flutter,配置dart

因为后期使用flutter进行开发,flutter包含dart

下载地址:

https://flutter.dev/docs/development/tools/sdk/releases#windows

flutter官网:

https://flutterchina.club/get-started/install/

最后执行flutter doctor命令:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uNIikrBN-1628145530677)(image/01.png)]

为了能使用flutter中的dart还需要配置dart的环境变量

2、vscode

在vscode中安装插件,dart(代码提示)和code runner(运行.dart文件)

写好代码后,右击“run code”

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5s3BNOT7-1628145530679)(image/02.png)]

二、dart基础

1、入口方法main

有两种定义方式:

main(){
	print("hello word!");
}

无返回值:

void main(){
  print("hello word!");
}

2、注释

//注释11111
///注释2222
/**
 * 注释33333
 */
void main() {
  print("hello word!");
}

3、变量

dart是一个强大的脚本语言,可以不预先定义变量类型,自动会进行类型推断

dart中定义变量可以通过var关键字、也可以通过类型来申明变量

注意:var后就不要写类型,写了类型 就不写var

void main() {
  var str = "hell";
  print(str);

  String a = "word";
  print(a);

  int num = 123;
  print(num);
}

命名规则:

  1. 变量名称必须由数字、字母、下划线和美元符($)组成。
  2. 注意:标识符开头不能是数字
  3. 标识符不能是保留字和关键字
  4. 变量的名字是区分大小写的
  5. 标识符(变量名称)一定要见名思意。变量名称建议用名次,方法名称建议用动词

4、常量(final和const修饰符)

const值不变,一开始就得赋值

final可以开始不赋值,只能赋一次;而final不仅有const的编译时的特性,最重要的它是运行时常量,并且final时惰性初始化,即在运行时第一次使用前才初始化

void main() {
  const PI = 3.1415926;
  // PI = 111; //不可以被修改(错误写法)
  print(PI);

  final P = 3.1415926;
  // P = 111; //不可以被修改(错误写法)
  print(P);

  //final:运行时常量,并且final时惰性初始化,即在运行时第一次使用前才初始化
  final time = new DateTime.now();

  //const不可以
  //const time2 = new DateTime.now();
  print(time);
}

5、数据类型

常用数据类型:

A)、Numbers(数量):int、double

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JULcr5Yo-1628145530680)(image/05.png)]

B)、Strings(字符串):String

三个单引号(’)或三个双引号("),可以实现换行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LtvLrXqj-1628145530682)(image/03.png)]

字符串的拼接:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X4uV2iVo-1628145530682)(image/04.png)]

C)、Booleans(布尔):bool

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UbXyJ4QQ-1628145530683)(image/06.png)]

D)、List(数组/集合)

? 在dart中,数组是列表对象,所以大多数人只是成他们为列表

void main() {
  //第一种 定义List的方式
  var l1 = ["张三", 123, true];
  print(l1);
  print(l1.length);
  print(l1[0]);

  //第二种 定义List的方式,指定类型
  var l2 = <String>["ss", "ls"];
  print(l2);

  //第三种 定义List的方式 增加数据 通过【】创建的集合他的容量可以变化
  var l3 = [];
  l3.add("zs");
  l3.add("ls");
  print(l3);

  //第四种 定义List的方式
  // var l4 = new List();  在新版本的dart里面没法使用这个方法,但是在flutter 2.x中还是可以使用到

  var l5 = List.filled(2, ""); //创建一个固定长度的集合
  print(l5);
  l5[0] = "123";
  l5[1] = "abc";
  print(l5);

  var l6 = List<String>.filled(2, ""); //指定类型
}

E)、Maps(字典)

? 通常来说,Map是一个键值对相关的对象,键和值可以是任何类型的对象。每个键只出现一次

void main() {
  //第一种 定义Map的方式
  Map person = {
    "name": "wxb",
    "age": 23,
    "work": ["ww", "aa"]
  };

  print(person);
  print(person["name"]);

  //第二种 定义Map的方式
  Map p = new Map();
  p["name"] = "ls";
  p["age"] = 34;
  print(p);
}

F)、is 关键词判断类型

void main() {
  var str = "111";

  if (str is String) {
    print("String");
  } else {
    print("其他");
  }
}

6、运算符

A)、算数运算符

void main() {
  int a = 13;
  int b = 5;

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

B)、关系运算符

void main() {
  int a = 13;
  int b = 5;

  print(a == b); //等于
  print(a != b); //不等于
  print(a > b); //大于
  print(a < b); //小于
  print(a >= b); //大于等于
  print(a <= b); //小于等于
}

C)、逻辑运算符

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

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

  print(a && b);

  // || 或者 :全部为false的话值为false,否则值为true
  bool c = true;
  bool d = false;

  print(c || d);
}

D)、赋值运算符

void main() {
  //1、基础赋值运算符 =  ??=

  int a = 10;
  print(a);

  //b??=23 表示如果b为空的话把23赋值给b

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

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

7、条件表达式

void main() {
  //1、 if else  switch case
  bool flag = true;

  if (flag) {
    print("aa");
  } else {
    print("bb");
  }

  var sex = 's';

  switch (sex) {
    case "男":
      print("是男");
      break;
    case "女":
      print("是女");
      break;
    default:
      print("错误");
      break;
  }

  //2、 三目运算符
  var f = true;
  var str = f ? "wo shi true" : "wo shi false";
  print(str);

  //3、 ??运算符
  var a;
  var b = a ?? 20;  //判断a是否为空,为空的话将20赋值给b
  print(b);
}

8、类型转换

A)、Number与String类型之间的转换

//Number类型转换成String类型 toString()
  var myNumStr = 1234;
  var str1 = myNumStr.toString();
  print(str1);

B)、String类型转换成Number类型

void main() {
  //String类型转换成Number类型 int.parse() double.parse()
  String str = '123';
  var myNum = int.parse(str);
  print(myNum is int);

//处理异常
  String price = '';
  var myDouble;
  try {
      myDouble = double.parse(price);
      print(myDouble);
  } catch (err) {
      print(err);
      myDouble = 0;
      print(myDouble);
  }
}


C)、其他类型转换成bool类型

//	isEmpty:判断字符串是否为空
//string
var str = '';
if(str.isEmpty){
	print('为空');
}else{
	print('不为空');
}

//number
var myNum = 123;
if(myNum == 0){
  print('wei true');
}eles{
  print('wei false');
}

var myNum2;
if(myNum2 == null){
  print('wei kong')
}

var myNum3 = 0/0;
if(myNum3 isNaN){
  print('wei NaN');
}


9、循环

A)、for循环

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

B)、while循环

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

C)、do while循环

void main() {
  var i = 1;

  do {
    print(i);
    i++;
  } while (i < 10);
}


while和do while循环区别:

在第一次循环条件不成立的时候,while循环体中是不执行的,但是do while会执行一次(do while无论如何都会执行一次)

D)、break关键字

break语句功能:

?	1、在switch语句中使流程跳出switch解构

?	2、在循环语句中使流程跳出当前循环,遇到break 循环终止,后面代码也不会执行

强调:

?	1、如果在循环中已经执行了break语句,就不会执行循环体中位于break后的语句

?	2、在多层循环中,一个break语句只能向外跳出一层

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

E)、continue关键字

continue语句的功能:

?	1、只能在循环语句中使用,使本次循环结束,即跳过循环体下面尚未执行的语句,
		接着进行下面的代码

?	2、continue可以用在for循环以及while循环中,但是不建议在while中使用,
		不小心容易造成死循环

三、集合

1、List

A)、定义list

void main() {
  var l1 = ["zs", "ls"];
  print(l1);

  //指定类型
  var l2 = <String>["ss", "qq"];
  print(l2);

  //通过【】定义的list,可以通过add增加
  List l3 = <String>["aa", "qq"];
  print(l3);
  print(l3.length);
  l3.add("cc");
  print(l3.length);

  //通过List.filled()定义固定长度的list
  List l4 = List<String>.filled(2, "");
}

B)、常用属性

 1、length			长度?	
 2、reversed		翻转?
 3、isEmpty		 是否为空?	
 4、isNotEmpty   是否不为空

C)、常用方法

	1、add()							增加?	
	2、addAll(['aa','aa'])				增加数组?	
	3、indexOf		  					查找。传入具体值,得到索引值(查找不到返回-1)?	
	4、remove		   					删除。传入具体值?	
	5、removeAt							删除。传入索引值?	
	6、fillRange(start,end,value)		 修改?	
	7、insert(index,value)				指定位置插入?	
	8、insertAll(index,list)			指定位置插入list?	
	9、toList()							其他类型转换成List?	
	10、join()			 				List转换成字符串			
		eg: l1.join(",")   		会输出以“,”作为分割的元素字符串?	
	11、split()			  				字符串转化成List			
		eg: str.split(",")   	会以“,”作为字符串的分割符,转为list?	
	12、forEach							循环?	
	13、map								通过map修改集合元素
void main() {
  //map 方法修改集合中的数据
  List l1 = [1, 2, 3];

  var newList = l1.map((value) {
    return value * 2;
  });

  print(newList);
  print(newList.toList());
  //forEach循环
  l1.forEach((element) {
    print(element);
  });
}


2、Set

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

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

3、Map

映射是无序的键值对:

A)、常用属性

	1、keys		获取所有的key值?	
	2、values		获取所有的value值?	
	3、isEmpty		是否为空?	
	4、isNotEmpty	是否不为空

B)、常用方法

	1、remove(key)				删除指定key的数据
	?2、addAll( {...} )			合并映射   给映射内增加属性
	?3、containsValue(value)		查看映射内的值	返回true / false

4、where、any、every

A)、where

void main() {
  //where 返回满足条件的值
  List l1 = [1, 2, 3];

  var newList = l1.where((value) {
    return value > 2;
  });

  print(newList);
  print(newList.toList());
}

B)、any

void main() {
  //any 判断是否有满足条件的元素,如果有一个就返回true,如果都不满足就返回false
  List l1 = [1, 2, 3];

  var falg = l1.any((value) {
    return value > 2;
  });

  print(falg);
}


C)、every

void main() {
  //every 判断是否所有元素都满足条件,如果都满足返回ture,否则返回false
  List l1 = [1, 2, 3];

  var falg = l1.every((value) {
    return value > 2;
  });

  print(falg);
}


  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 15:58:03  更:2021-08-06 15:58:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/14 20:04:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码