787 字
4 分钟
Flutter学习之旅二:Dart语法
2025-03-07

新建文件夹然后用VSCode打开,再随便新建个Dart文件,比如 hello.dart ,开始学习 Dart 语法吧!

TIP

不要忘了在 VSCode 安装 Flutter 和 Dart 插件哦~

Dart需要分号,JavaScript习惯了不写分号的话需要注意一下。先来个 Hello World 起手:

void main() {
  print('Hello,World!');
}

基础语法#

变量和数据类型#

Dart 是强类型语言,但支持类型推导。var 表示局部变量,const 编译时常量,final 运行时常量。显式声明类型:

类型类别说明示例
int数值存储整数int age = 25;
double数值存储浮点数double price = 10.5;
num数值intdouble 的父类num x = 3.5;
String文本存储字符串String name = "Flutter";
bool布尔型存储 truefalsebool isActive = true;
List<T>集合数组/列表List<int> nums = [1, 2, 3];
Set<T>集合无重复元素的集合Set<String> names = {"A", "B"};
Map<K,V>集合键值对存储Map<String, int> scores = {"张三": 90};
dynamic特殊允许存储任意类型dynamic value = 123;
Object特殊Dart 中所有对象的基类Object obj = "字符串";
void特殊表示无返回值void sayHello() {}
Never特殊表示永不返回的函数Never error() { throw Exception(); }
T?空安全允许变量为 nullString? nullableStr = null;
var name = '张三';
int age = 20;
const pi = 3.14;
final now = DateTime.now();
List<String> nameList = ['Jupiter', 'Saturn', 'Uranus', 'Neptune'];
Object image = {
  'tag': ['cute','cat'],
  'url': 'https://dart.cn/language/variables/',
};

运算符#

支持常见的运算符,同时也有一些Dart特色的:

// 可空类型
int? a;
// 空值合并运算符,若 a 为 null,则 b = 0
int b = a ?? 0;
// 安全调用,若 a 为 null 则返回 null
print(a?.toString());

控制流#

if/else、for、while 的写法和 JavaScript 一致。

void main() {
  for (var i = 0; i < 5; i++) {
    print(i);
  }
}

函数#

函数定义#

// 常规定义
int add(int a, int b) {
  return a + b;
}

// 函数体只有一行可用箭头函数
int times(int a, int b) => a * b;

// 可选参数
void greet(String name, {String? title}) {
  print('Hello,${title ?? '你好'} ${name}');
}

使用函数#

void main() {
  greet('张三', title: 'Mr.');
  add(1, 2);
  times(3, 4);
  print("3+5=${add(3, 5)}");
  // 匿名函数,常用于函数回调,与JavaScript的箭头函数类似
  var list = [1, 2, 3];
  list.forEach((item) => print(item));
}

类和对象#

类定义#

class Person {
  String name;
  int age;
  Person(this.name, this.age);
  void sayHello() {
    print('Hello,I am $name.');
  }
}

类继承#

class Student extends Person {
  String school;
  Student(String name, int age, this.school) : super(name, age);
  @override
  void sayHello() {
    print('Hello,I am $name from $school');
  }
}

使用#

void main() {
  Person p = Person('Alice', 30);
  p.sayHello();
  Student s = Student('Bob', 20, 'Harvard.');
  s.sayHello();
}

异步编程#

Future#

Future<String> fetchData() {
  return Future.delayed(Duration(seconds: 2), () => '数据');
}

async/await#

void main() async {
  print('开始');
  String data = await fetchData();
  print(data);
  print('结束');
}

集合#

List#

类似 JavaScript 的数组:

void main() {
  var list = [1, 2, 3];
  list.add(4); // 添加元素
  list.forEach(print); // 逐个输出数组
}

Map#

类似 JavaScript 的对象:

void main() {
  var map = {'name': '张三', 'age': 20};
  print(map['name']); // 输出:张三
}

Set#

类似 JavaScript 的Set,用于存储唯一值:

void main() {
  var set = {1, 2, 3};
  set.add(2); // 重复元素不会添加
  print(set); //输出:{1, 2, 3}
}

异常处理#

try/catch 用于捕获和处理异常:

void main() {
  try {
    int result = 10 ~/ 0;
  } catch (e) {
    print('错误:$e'); // 输出:错误:IntegerDivisionByZeroException
  } finally {
    print('finally');
  }
}
Flutter学习之旅二:Dart语法
https://blog.timemoss.com/posts/e2e1192d/
作者
blacktree
发布于
2025-03-07
许可协议
CC BY-NC-SA 4.0