为了方便运行可以下载一个 CodeRunner 插件,可以右键点击运行
使用 dart 语言,需要创建一个.dart
结尾的文件。
// 入口是main ,运行main 中的代码
// 写代码一定要写分号
void main(List<String> args) {
print('hellow new flutter');
}
print
可以通过var
来定义变量,他会自动匹配变量的数据类型,也可以使用 对应的 String , int 来指定定义的类型。
使用 const
或者 final
来定义常量
const 与 final 的区别。
const 定义后需要赋值否则汇报从。final 可以先定义不赋值,可以在后面再赋值,有且只有一次赋值的机会 。final 也可是一个函数的返回结果的赋值。但是 const 不可以
void main(List<String> args) {
print('hellow new flutter');
String str1 = 'hellow';
var num1 = 2; // 可以自动的进行类型推断
const ENV\_POORT = 8000;
print(num1);
print(str1);
}
字符串定义可以使用 '单引号',"双引号",'''三引号可以换行!!!'''
dart 提供 $变量 的方式,再字符串中引入别的内容,不论是什么用什么定义的字符串
判断相等使用 == ,dart 中不存在===
void main(List<String> args) {
String str1 = 'hellow';
final envDomain;
envDomain = 'net';
String str2 = '''
这里是 三个引号 模板字符串可以使用模板字符串方式使用---
${envDomain} -- 模板里的内容
''';
String str4 = '''
不加 大括号的变量
$str2
''';
print(str2 == str4);
print(str2);
print(str4);
}
使用 int 来定义整形,使用 double 来定义浮点类型
void main(List<String> args) {
print('hellow new flutter');
int numb1 = 100;
double numb2 = 200.5;
print(numb1 + numb2);
print(numb1);
}
使用 bool 来定义布尔类型
void main(List<String> args) {
bool bol = true;
print(bol);
}
使用 List 来定义数组,自然也可以使用 var
可以使用 <String>
的方式来定义数组中的内容是那种类型,要求字符串中所有的内容都是 String 类型的
List.filled(length, '1')
相当于创建了一个固定长度的数组,后面的内容可以不填写。 创建后不可以通过 add 增加来改变 List 长度,也不可以通过 length 赋值来改变 List 长度
arr.add()
向数组最后方新加入一个元素
void main(List<String> args) {
List list = ['xiaotao', 23, false];
List l2 = <String>['xiaotao', 'xiaoming', 'xiaoli'];
// 也可以通过 <String>来规定数组里元素的数据类型
List l3 = List<String>.filled(2, '1');
l2.add('xiaohei');
// l3.add(2); 会报错,不可以再添加,不可以改变长度
// l3.length = 0; 会报错。不可以改变长度
l3[0] = 'hsu'; // 可以改变数组内容
print(l2);
print(l3);
print(list);
}
Map 类型,可以通过 new Map()来进行对象的创建,也可以直接使用 var 来定义
定义对象名称需要用双引号包裹,读取和赋值的时候需要使用 obj'name' 的方式来获取,不可以使用 js . 的方式调用。
void main(List<String> args) {
var obj = {"name": "xiaotao", "age": 23};
print(obj);
print(obj["name"]);
}
void main(List<String> args) {
List arr1 = [1, 23, 'sser'];
String str = 'sedsk';
double num = 12.5;
print(arr1 is String);
print(arr1 is List);
print(str is String);
print(num is int);
print(num is double);
}
void main(List<String> args) {
// int.parse 只能转换整型,
// 浮点型需要用double.parse来转换
// 所以可以全部使用 double.parse 来转换
String str = '121.5';
// int num = int.parse(str); // 报错
double num2 = double.parse(str);
print(num2);
// 可以使用 .toString()将数字类型转换为字符串
String str1 = num2.toString();
print(str1 == str);
}
void main(List<String> args) {
int a = 5;
int b = 2;
print(a ~/ b);
}
switch
可以在每个 case 执行后不写 break ,dart 默认执行一条语句后就结束
其余的内容与 JS 相同
length 长度 rerversed 将 List 数据反转,返回的是一个可迭代的对象 // 可以通过 toList 将结果转换为数组 isEmpty 是否为空 isNotEmpty 是否非空
void main(List<String> args) {
// List
// List 属性 length 长度 ,
List menu = ['zhangsan', 'lisi', 'wangwu'];
print(menu.length);
// reversed 将List数据反转,返回的是一个可迭代的对象
// 可以通过toList 将结果转换为数组
print(menu.reversed.toList());
print(menu.isEmpty);
print(menu.isNotEmpty);
}
List.indexOf(value)
查找指定元素索引
List.add()
向 List 中添加元素
List.addAll(['xx'])
向 List 添加多个元素,传入的内容是以一个数组。与 js concat 类似
List.insert(index,'value')
向索引为 index 的位置插入 value 元素
List.insertAll(index,['value1','value2'])
向索引为 index 的位置插入 'value1','value2'元素
List.join('-')
与 String.split('-')
用法与 js 相同
void main(List<String> args) {
List menu = ['zhangsan', 'lisi', 'wangwu'];
menu.add('zhaoliu');
// 类似拼接数组
menu.addAll(['huqi', 'liuba']);
// 在索引为2 的位置插入数据
menu.insert(2, 'chenjiu');
// 在数组后面追加数据
menu.insertAll(menu.length, ['sunshi']);
print(menu);
}
List.remove()
删除指定元素
List.removeAt()
删除指定索引
void main(List<String> args) {
List menu = ['zhangsan', 'lisi', 'wangwu'];
menu.add('zhaoliu');
menu.addAll(['huqi', 'liuba']);
print(menu);
// 删除 remove removeAt
menu.remove('liuba');
menu.removeAt(4);
print(menu);
// 结果 [zhangsan, lisi, wangwu, zhaoliu]
// 可以先查找元素索引,再指定索引删除
int rout = menu.indexOf('wangwu');
print(rout);
}
List.foreach((element){})
List.map((element){})
map
不会操作原数组,返回一个新的可迭代的对象,可以通过 toList 转换成数组
void main(List<String> args) {
List menu = ['zhangsan', 'lisi', 'wangwu'];
var newMenu = menu.map((element) {
print(element);
return element + 'map操作';
});
print(newMenu.toList());
}
List.where((element)=>false)
where 类似与 js 数组中的 filter,返回的也是可迭代的对象,不会操作原数组
void main(List<String> args) {
List menu = ['zhangsan', 'lisi', 'wangwu'];
var result = menu.where((element) => element.length > 7);
print(result);
}
List.every((element)=>false)
every 遍历必须每一个元素都满足条件则返回 true,如果有一个不满足则返回 false
List.any((element)=>false)
any 遍历如果有一个元素满足条件则返回 true,如果都不满足则返回 false
对象里的属性名称一定要被双引号包起来
void main(List<String> args) {
List table = [
{"id": 1, "check": true},
{"id": 2, "check": true},
{"id": 3, "check": true},
{"id": 3, "check": false},
];
bool isAllCheck = table.every((element) => element["check"]);
bool hasNoCheck = table.any((element) => !element["check"]);
print(isAllCheck);
print(hasNoCheck);
}
与 JS 相同,都是不允许重复的结构,不可以 newSet()中直接传参
void main(List<String> args) {
var set = new Set(); // 和JS 一样,不可以有重复
set.add(111);
set.add(222);
set.add(111);
print(set.toList());
// 去重 传入数组不可以在new Set()中传参,需要new 一个空的,在调用addAll方法填入
List arr = [1, 1, 2, 3, 4, 3, 2, 34, 5, 9, 5];
set.addAll(arr);
print(set);
}
keys 获取所有的属性名称 values 获取所有的属性值 entries 将键值对放入数据中,可以通过遍历获取内容 isEmpty 是否为空 isNotEmpty 是否非空
void main(List<String> args) {
// 创建Map类型的数据就是用Map 可以在后面根据数据的类型定义key和value的类型,
// dynamic 是动态的意思
Map<String, dynamic> obj = {"name": "zhangshan", "age": 1};
var keys = obj.keys;
var values = obj.values;
var items = obj.entries;
print(items);
for (var element in items) {
print(element.value); // 可以直接调用读取,不可以赋值
}
}
Map['key'] = "value";
增加一个的方法
Map.addAll({"key":"value"})
添加多个方法
Map.addEntries([MapEntry("key", "value")])
传入的是一个 MapEntry 的数组
Map.remove("key")
根据 key 值删除元素
Map.removeWhere((key, value) => value == 'lisi')
根据条件判断删除
Map.containsKey("key")
判断是否包含某个属性
Map.containsValue("value")
判断是否包含某个值
Map.forEach((key, value){})
map 支持 foreach
Map.map((key, value){})
Map 支持 map,返回值需要时 MapEntry,不改变原对象,会生成新的对象
void main(List<String> args) {
// 创建Map类型的数据就是用Map 可以在后面根据数据的类型定义key和value的类型,
// dynamic 是动态的意思
Map<String, dynamic> obj = {"name": "zhangshan", "age": 1};
// 直接赋值
obj['addr'] = "chengdu";
// 添加多个
obj.addAll({"home": "jilin", "id": 'x12289021'});
// 通过addEntries 添加
obj.addEntries([MapEntry("mom", "lisi"), MapEntry("father", "wangwu")]);
// 删除
obj.remove("father");
obj.removeWhere((key, value) => value == 'lisi');
print(obj.containsKey('name'));
print(obj.containsValue('name'));
print(obj);
// foreach
obj.forEach((key, value) {
print(key);
});
// map
Map obj2 = obj.map((key, value) {
print('$key is $value');
return MapEntry(key, '$key is $value');
});
print(obj2)
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。