Skip to content

Commit 2d05023

Browse files
committed
update dart sample codes
1 parent a1a9b9a commit 2d05023

File tree

93 files changed

+2526
-286
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+2526
-286
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import 'dart:async';
2+
3+
// async延迟功能
4+
main() {
5+
foo(499).then(print);
6+
print("after foo call");
7+
}
8+
9+
10+
Future<int> foo(x) async {
11+
print(x);
12+
return x + 1;
13+
}
14+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import 'dart:async';
2+
3+
void main(){
4+
checkVersion();
5+
}
6+
7+
Future checkVersion() async {
8+
var version = await lookUpVersion();
9+
// 其他操作
10+
}
11+
12+
void lookUpVersion(){
13+
// 逻辑...
14+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import 'dart:async';
2+
3+
void main() {
4+
checkVersion();
5+
}
6+
7+
Future checkVersion() async {
8+
try {
9+
var version = await lookUpVersion();
10+
} catch (e) {
11+
// 这里可以看到是什么错误。
12+
} finally {
13+
// 正确的解决方式写在这里
14+
}
15+
}
16+
17+
void lookUpVersion() {
18+
// 逻辑...
19+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import 'dart:async';
2+
3+
void main() {
4+
checkVersion();
5+
}
6+
7+
Future checkVersion() async {
8+
var entrypoint = await findEntrypoint();
9+
var exitCode = await runExecutable(entrypoint, 10);
10+
await flushThenExit(exitCode);
11+
}
12+
13+
String findEntrypoint() {
14+
// 逻辑...
15+
return 'entrypoint';
16+
}
17+
18+
String runExecutable(String entrypoint, int args) {
19+
// 逻辑...
20+
return 'executable';
21+
}
22+
23+
String flushThenExit(String executable) {
24+
// 逻辑...
25+
return 'exit';
26+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import 'dart:async';
2+
3+
// 要在应用程序的main()函数中使用await,main()方法必须标记为async
4+
5+
// 结果:
6+
// checkVersion()
7+
// lookUpVersion()
8+
// lookUpVersion()
9+
// In main: version is 版本号:v1.0
10+
Future main() async {
11+
checkVersion();
12+
print('In main: version is ${await lookUpVersion()}');
13+
}
14+
15+
Future checkVersion() async {
16+
print('checkVersion()');
17+
var version = await lookUpVersion();
18+
}
19+
20+
Future<String> lookUpVersion() async{
21+
print('lookUpVersion()');
22+
return '版本号:v1.0';
23+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import 'dart:async';
2+
3+
void main(){
4+
lookUpVersion(); // 输出结果:lookUpVersion()同步方法 返回值是:1.0.0
5+
lookUpVersion2(); // 输出结果:lookUpVersion2()异步方法 返回值是:1.0.0
6+
lookUpVersion3(); // 输出结果:lookUpVersion3()异步方法 没有返回值
7+
}
8+
9+
10+
String lookUpVersion() {
11+
print('lookUpVersion()同步方法 返回值是:1.0.0');
12+
return '1.0.0';
13+
}
14+
15+
// 返回值Future<String>
16+
Future<String> lookUpVersion2() async {
17+
print('lookUpVersion2()异步方法 返回值是:1.0.0');
18+
return '1.0.0';
19+
}
20+
21+
// 返回值Future<void>
22+
Future<void> lookUpVersion3() async {
23+
print('lookUpVersion3()异步方法 没有返回值');
24+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import 'dart:io';
2+
import 'dart:convert';
3+
4+
void main() {
5+
test();
6+
}
7+
8+
// await for循环的使用示例
9+
// 这里是读取本地文件的内容
10+
Future test() async {
11+
var config = File('d:\\test.txt');
12+
// 打开io流进行文件读取
13+
Stream<List<int>> inputStream = config.openRead();
14+
var lines = inputStream
15+
// 设置编码格式为utf-8
16+
.transform(utf8.decoder)
17+
.transform(LineSplitter());
18+
try {
19+
await for (var line in lines) {
20+
print('从Stream中获取到的内容是: ${line} \r文本内容长度为:'+
21+
'${line.length}\r=======');
22+
}
23+
print('文件现在没有关闭。。。');
24+
} catch (e) {
25+
print(e);
26+
}
27+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
这是测试内容:
2+
123456
3+
文字
4+
abcdefg
5+
ABCDEFG
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
void main() {
2+
// 返回一个Iterable对象
3+
Iterable<int> naturalsTo(int n) sync* {
4+
int k = 0;
5+
while (k < n) yield k++;
6+
}
7+
8+
// 生成器是递归的,您可以使用yield*提高性能
9+
Iterable<int> naturalsDownFrom(int n) sync* {
10+
if (n > 0) {
11+
yield n;
12+
yield* naturalsDownFrom(n - 1);
13+
}
14+
}
15+
16+
// 返回一个Stream对象
17+
Stream<int> asynchronousNaturalsTo(int n) async* {
18+
int k = 0;
19+
while (k < n) yield k++;
20+
}
21+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import 'dart:isolate';
2+
import 'dart:io';
3+
import 'dart:convert';
4+
5+
// 在另一个隔离区()中同步读取“D://file.json”
6+
// 结果是{msg: [{title: 你好1, contents: yes}, {title: 你好2, contents: NO}]}
7+
main() async {
8+
// 在其他隔离(isolate)中同步读取文件,然后对其进行解码。
9+
print(await readIsolate());
10+
}
11+
12+
// 同步读取'D//file.json'(在同一个线程中)
13+
Map readSync() {
14+
JsonCodec().decode(new File('D://file.json').readAsStringSync());
15+
}
16+
17+
// 在另一个隔离区()中同步读取“D://file.json”
18+
Future readIsolate() async {
19+
final response = new ReceivePort();
20+
await Isolate.spawn(_isolate, response.sendPort);
21+
return response.first;
22+
}
23+
24+
/// 期望通过[Isolate.spawn]创建
25+
void _isolate(SendPort sendPort) {
26+
sendPort.send(readSync());
27+
}
28+
29+
// 下面是file.json文件的内容:
30+
// {
31+
// "msg": [
32+
// {
33+
// "title": "你好1",
34+
// "contents": "yes"
35+
// },
36+
// {
37+
// "title": "你好2",
38+
// "contents": "NO"
39+
// }
40+
// ]
41+
// }
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
void main() {
2+
// 1.变量的声明3种方式:
3+
var names1 = '张三';
4+
Object names2 = '张三';
5+
dynamic name3 = '李四';
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
void main() {
2+
// 2.变量的默认值:
3+
int intDefaultValue;
4+
assert(intDefaultValue == null);
5+
print(intDefaultValue); // null
6+
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
// 3. final 和 const 示例
2+
void main() {
3+
test1();
4+
test2();
5+
test3();
6+
test4();
7+
test5();
8+
test6();
9+
}
10+
11+
void test1() {
12+
//可以省略类型声明
13+
final name1 = "张三";
14+
//final String name1 = "张三";
15+
const name2 = "李四";
16+
//const String name2 = "李四"
17+
}
18+
19+
void test2() {
20+
//这样写都会报错
21+
//final var name1 = "张三";
22+
//const var name2 = "李四";
23+
}
24+
25+
void test3() {
26+
final name1 = "张三";
27+
// 如果这样写,编译器提示:a final variable, can only be set once
28+
// 一个final变量,只能被设置一次。
29+
//name1 = "zhangsan";
30+
31+
const name2 = "李四";
32+
// 这样写,编译器提示:Constant variables can't be assigned a value
33+
// const常量不能赋值
34+
// name2 = "lisi";
35+
}
36+
37+
// 运算
38+
void test4() {
39+
const units = 60; //(单位: s/min)
40+
const seconds1 = units * 20; //秒数=60*分钟数 结果为:1200
41+
42+
const minutes = 20; //20分钟
43+
const seconds2 = units * minutes; //秒数=60*分钟数 结果为:1200
44+
45+
final speed1 = 100; //速度(km/h)
46+
final double distance1 = speed1 * 2.5; // 距离 = 速度*时间,结果为:250.0
47+
48+
double time = 2.5;
49+
final double distance2 = speed1 * time; // 距离 = 速度*时间,结果为:250.0
50+
}
51+
52+
// const更多用法
53+
void test5() {
54+
// const[]创建一个空的、不可变的列表(EIL)
55+
var varList = const []; // varList 当前是一个EIL
56+
final finalList = const []; // finalList一直是EIL
57+
const constList = const []; // constList 是一个编译时常量的EIL
58+
59+
varList = ["haha"];
60+
61+
// 不能更改final变量或const变量的值
62+
// 这样写,编译器提示:a final variable, can only be set once
63+
// finalList = ["haha"];
64+
65+
// 这样写,编译器提示:Constant variables can't be assigned a value
66+
// constList = ["haha"];
67+
}
68+
69+
// 常量字符串
70+
void test6() {
71+
// 这些是常量字符串
72+
const aConstNum = 0;
73+
const aConstBool = true;
74+
const aConstString = '常量字符串';
75+
76+
const validConstString = '$aConstNum $aConstBool $aConstString null';
77+
78+
// 这些不是常量字符串
79+
var aNum = 0;
80+
var aBool = true;
81+
var aString = '这是String字符串';
82+
const aConstList = const [1, 2, 3];
83+
84+
// const常量必须用const类型的值初始化。
85+
//这样用就会报错:Const variables must be initialized with a constant value
86+
// const invalidConstString = '$aNum $aBool $aString $aConstList';
87+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
void main() {
2+
test1();
3+
test2();
4+
}
5+
6+
// int 示例
7+
void test1() {
8+
int intNum1 = 10;
9+
print(intNum1); //结果是10
10+
int intNum2 = 0xDEADBEEF;
11+
print(intNum2); //结果是3735928559
12+
13+
// bitLength 返回存储此int整数所需的最小位数
14+
int a1 = 1; // 占了1个bit 相当于二进制数字 00000000 00000001
15+
int a2 = 12; // 占了4个bit 相当于二进制数字 00000000 00001100
16+
int a3 = 123; // 占了7个bit 相当于二进制数字 00000000 01111011
17+
int a4 = 1234; // 占了11个bit 相当于二进制数字 00000100 11010010
18+
print('${a1.bitLength}'); // 1
19+
print('${a2.bitLength}'); // 4
20+
print('${a3.bitLength}'); // 7
21+
print('${a4.bitLength}'); // 11
22+
}
23+
24+
// double示例
25+
void test2() {
26+
double doubleNum1 = 1.1;
27+
print(doubleNum1); //结果是1.1
28+
double doubleNum2 = 1.42e5;
29+
print(doubleNum2); //结果是142000.0
30+
31+
// int自动转double
32+
double test = 12; //打印结果是12.0
33+
print(test); //打印结果是12.0
34+
35+
// 使用int的api转double
36+
int test2 = 10;
37+
print(test2.toDouble()); // 结果是: 10.0
38+
39+
// double转int
40+
double test3 = 15.1;
41+
double test4 = 15.1234;
42+
print(test3.toInt()); // 结果是15
43+
print(test4.toInt()); // 结果是15
44+
}

0 commit comments

Comments
 (0)