本文的所有内容均是官方文档的简单翻译和理解。
主要介绍Dart语言[变量、内置类型、函数、类、泛型、异常、库、生成器、元数据(注解)]
本人以实际代码案例为主,可以直接复制Android studio运行学习。
变量
变量的声明
- var
- dynamic
- Object
变量的默认值
- 没有初始化的变量自动获取一个默认值为null
- 一切皆对象,对象的默认值为null
final和const
- 共同点:
- 1.声明的类型可省略
- 2.初始化后不能再赋值
- 3.不能和var同时使用
- 不同点(需要注意的地方)
- 1.类级别常量,使用static const
- 2.const可使用其他const 常量的值来初始化其值
- 3.使用const赋值声明,const可省略
- 4.可以更改非final、非const变量的值,即使曾经具有const值
- 5.const导致的不可变性是可传递的
- 6.相同的const常量不会在内存中重复创建
- 7.const需要是编译时常量
内置类型
num, int, double
- int : 整数值
- double : 64-bit双精度浮点数
- int和double是num的子类
String
- Dart 字符串是 UTF-16 编码的字符序列,可以使用单引号或者双引号来创建字符串
- 可以使用三个单引号或者双引号创建多行字符串对象
- 可以使用 r 前缀创建”原始raw”字符串
- 可以在字符串中使用表达式: ${expression},如果表达式是一个标识符,可以省略 {},如果表达式的结果为一个对象,则 Dart 会调用对象的 toString() 函数来获取一个字符串
bool
- bool对象未初始化的默认值是null
List
- Dart中可以直接打印list包括list的元素,List也是对象。java中直接打印list结果是地址值
- Dart中List的下标索引和java一样从0开始
- 和java一样支持泛型
- 有增删改查,支持倒序,自带排序、洗牌,可使用+将两个List合并
Map
- 跟java类似,不做详解
Set
- set1.difference(set2):返回set1集合里有但set2里没有的元素集合
- set1.intersection(set2):返回set1和set2的交集
- set1.union(set2):返回set1和set2的并集
- set1.retainAll():set1只保留某些元素(要保留的元素要在原set中存在)
Runes路由
Main(){
Runes runes = new Runes('\u{
1f605} \u6211‘);
var str1 = String.fromCharCodes(runes);
print(str1);
}
Symbol
- Symbol标识符,主要是反射用,现在mirrors模块已经被移除
函数
- 可在函数内定义
- 定义函数时可省略类型
- 定义函数时可省略类型
可选参数
- 可选命名参数
- 可选位置参数
- 默认参数值
匿名函数
- 可赋值给变量,通过变量调用
- 可在其他函数中直接调用或传递给其他函数
闭包
Function makeAddFunc(int x) {
x++;
return (int y) => x + y;
}
main() {
var addFunc2 = makeAddFunc(2);
var addFunc4 = makeAddFunc(4);
print(addFunc2(3));
print(addFunc4(3));
}
函数别名
typedef Fun1(int a, int b);
typedef Fun2<T, K>(T a, K b);
int add(int a, int b) {
print('a + b');
return a + b;
}
class Demo1 {
Demo1(int f(int a, int b), int x, int y) {
var sum = f(x, y);
print("sum1 = $sum");
}
}
class Demo2 {
Demo2(Fun1 f, int x, int y) {
var sum = f(x, y);
print("sum2 = $sum");
}
}
class Demo3 {
Demo3(Fun2<int, int> f, int x, int y) {
var sum = f(x, y);
print("sum3 = $sum");
}
}
操作符

流程控制语句
- if else
- for, forEach, for-in
- while , do-while
- break ,continue
- switch case
异常
Exception类型

Error类型

异常抛出
// 抛出Exception 对象
throw new FormatException(‘格式异常');
// 抛出Error 对象
throw new OutOfMemoryError();
// 抛出任意非null对象
throw '这是一个异常';
异常捕获
try {
throw new OutOfMemoryError();
} on OutOfMemoryError {
print('没有内存了');
} on Error catch(e) {
print('Unknown error: $e');
} catch (e, s) {
print('Exception details: $e');
print('Stack Trace: $s');
} finally {
print('end');
}
类
构造函数
- Java中写法
class Point {
double x;
double y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
}
- Dart建议写法
class Point {
num x;
num y;
Point(this.x, this.y);
}
命名构造函数

本文深入探讨Dart语言,涵盖变量、内置类型如num、int、double、String、bool、List、Map、Set,以及函数、类、泛型、异常处理、库、异步编程和生成器。通过实例代码,适合初学者快速上手和运行实践。
— Dart语言详解&spm=1001.2101.3001.5002&articleId=105251710&d=1&t=3&u=7b381231038c487b9637819311e441b1)
4018

被折叠的 条评论
为什么被折叠?



