目录
Dart 类型(数值、字符串、布尔、List集合、Maps)
Dart中的List、Set、Map、forEach map where any every
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");
});
}