AS创建空的Dart工程
我们先用Android Studio创建一个Empty Project工程
然后选择file->Project Structure->Modules->+号新建一个Modules->选择dart SDK路径->finish
hello world
void main() {
var a;
print(a);
a = 'hello world';
print(a);
final c = 999;
}
/* Dart中的变量常量
使用var声明一个变量,可以赋值不同的类型
var 声明的变量如果没有初始化,那么他的值为null
使用final声明的一个只能赋值一次的变量 !
他是最终变量
*/
字符串
/* Dart 中的字符串
使用单引号和双引号都可以创建字符串
三个引号或双引号,创建多行字符串
*/
void stringDemo() {
String str = 'shark_ha\nzed';
print(str);
String str1 = "shark_ha\nzed";
print(str1);
String str2 = '''shark_ha
zed''';
print(str2);
print(str1+str2);
print(str1*2); /// 相当于str1复制了两份
int a = 10;
int b = 20;
print('a + b = ${a + b}'); /// a + b = 30
int c = 30;
print('a + b = $c'); /// a + b = 30
String str3 = "shark\nshark";
String str4 = r"shark\nshark"; /// 如果只是想让\n表示字符,只需要在字符前家r
print(str3);
print(str4);
/*打印结果
shark_ha
zed
shark_ha
zed
shark_ha
zed
* */
}
Dart中的list列表
/* Dart中的列表
* 创建可变list var list1 = [1,2,3];
* 创建不可变list var list2 = const [1,2,3];
* */
void listDemo() {
var list1 = [1, 2, 3, 'hank']; /// 用const修饰就是不可变的了 var list1 = const [1, 2, 3, 'hank'];
print(list1); /// [1, 2, 3, hank]
print(list1[3]); /// hank
list1[3] = 'shark';
print(list1); /// [1, 2, 3, shark]
print(list1.length); /// 4 数组长度
list1.add('kody'); /// 添加元素
print(list1); /// [1, 2, 3, shark, kody]
list1.insert(1, 'cat'); /// 插入元素
print(list1); /// [1, cat, 2, 3, shark, kody]
list1.remove('cat'); /// 删除元素
print(list1); /// [1, 2, 3, shark, kody]
list1.clear();
print(list1); ///[]
var list4 = [1,2,7,4,5,6,3,8];
list4.sort(); ///排序
print(list4); ///[1, 2, 3, 4, 5, 6, 7, 8]
print(list4.sublist(4,7)); ///[5, 6, 7] 获取4,到7位置的数据
}
Dart中的Map健值对
/* Dart中的Map健值对
* 创建可变的Map: var json1 = {'one': 'shark', 'tow': 'zed'};
* 创建可变的Map: var json1 = const {'one': 'shark', 'tow': 'zed'};
* */
void mapDemo() {
var json1 = {'one': 'shark', 'tow': 'zed'};
print(json1); /// {one: shark, tow: zed}
print(json1['one']); /// shark
json1['one'] = 'kody';
print(json1); /// {one: kody, tow: zed}
var json2 = const {'one': 'shark', 'tow': 'zed'};
// json2['one'] = 'hah'; 会报错
print(json2.length); ///长度
print(json2.values); /// 有哪些值
print(json2.keys); /// 有哪些健
var list = ['hank', 'shark', 'kody'];
print(list.asMap()); /// asMap(); 直接数组转成健值对 {0: hank, 1: shark, 2: kody}
}
Dart中的运算符
/* Dart中的运算符
* 赋值运算 ??=
* 条件表达式 ??
* */
void operatorDemo() {
var a;
a ??= 10; /// 当a为空的时候a会赋值10;
a ??= 5; /// 此时a不会赋值5
print(a); /// 10
var b;
b = 5;
print(b ?? a); /// 打印 5 如果左边有值返回左边,没有就返回 右边!
}
Dart中的方法
/* Dart中的方法
* 方法也是一个对象
* 返回值和参数类型可以省略
* 当方法的执行语句只有一句的时候,可以使用箭头函数 => 表达式
* 可选参数: 定义可选参数就必须带上形参的名字和类型
* 匿名方法:没有方法名称和方法!
* 闭包: closure
* 定义在函数里面的函数就是闭包,闭包也是一个对象
* 闭包的作用:可以访问外部函数的局部变量
* */
void closureDemo() {
var func = funA();
}
funA() {
int count = 0;
return () => print(count++);/// 这个匿名函数就是一个闭包
}
void functionDemo() {
var fun = funA();
fun(); /// 0
fun(); /// 1
fun(); /// 2
fun(); /// 3
var fun2 = funA();
fun2(); /// 0
fun2(); /// 1
fun2(); /// 2
fun2(); /// 3
print('function'); /// function
print(sum(1, 10)); /// 11
print(sum2(1, 10)); /// 11
print(sum3(2, 10)); /// -8
print(sum4(1, c: 5, b: 3)); /// 9
print(sum4(1, c: 5)); /// 6
var hello = printHello; /// 方法也是一个对象
hello(); /// hello
var list = [1,2,3,4];
list.forEach(print); /// 1 2 3 4
forEachDemo(list, print); /// 1 2 3 4
forEachDemo(list, (var a) {
b++;
print('元素$b = $a');
}); /// /// 1 2 3 4
list.forEach(printElement);
/*
元素1 = 1
元素2 = 2
元素3 = 3
元素4 = 4
* */
var func = () {
print('匿名方法');
};
func(); /// 匿名方法
/// 立即执行方法,函数
(() {
print('立即执行函数');
})(); /// 立即执行函数
}
forEachDemo(List list, void func(var element)) {
for(var e in list) func(e);
}
int b = 0;
printElement(var a) {
b++;
print('元素$b = $a');
}
printHello() => print('hello');
int sum(int a, int b) {
return a + b;
}
/// 也可以
sum2(a, b) => a + b;
/// 还可以
sum3(a, b) => a == 1 ? a + b : a - b;
/// 可选参数
sum4(a, {b, c}) {
b ??= 0;
c ??= 0;
return a + b + c;
}
/// 可选参数 int? 告诉了编译器,我处理了后面为空的情况
sum5(a, {int? b, int? c}) {
b ??= 0;
c ??= 0;
return a + b + c;
}
/// 可选参数 直接设置默认值
sum6(a, {int b = 0, int c = 0}) {
return a + b + c;
}