Flutter 基础语法和关键字
1. 变量声明
-
var
:自动推断变量的类型。var name = 'Flutter'; // 自动推断为String类型
-
int
,double
,String
,bool
:用于声明不同类型的变量。int age = 25; double height = 1.75; String city = 'Beijing'; bool isFlutterAwesome = true;
2. 运行时常量与编译时常量
-
const
:用于编译时确定的常量。const pi = 3.14;
-
final
:用于运行时确定的常量,赋值后不可更改。final name = 'John';
3.函数
-
无返回值和有返回值的函数:
void greet() { print('Hello Flutter!'); } int add(int a, int b) { return a + b; }
-
箭头函数
:对于单行函数,可以使用箭头语法。int multiply(int a, int b) => a * b;
4. 控制结构
-
条件语句
if (age > 18) { print('Adult'); } else { print('Minor'); }
-
循环
for (var i = 0; i < 5; i++) { print(i); } while (condition) { // 执行操作 }
5. 类与对象
-
类的定义:
class Person { String name; int age; Person(this.name, this.age); void showInfo() { print('Name: $name, Age: $age'); } } void main() { var person = Person('Alice', 30); person.showInfo(); }
-
构造函数:通过类的构造函数初始化对象。
6. 可选参数和命名参数
-
可选参数:用[]包裹,使参数成为可选项。
void greet([String? name]) { print('Hello, $name'); }
-
命名参数:通过使用{},调用时可以指定参数名。
void printInfo({required String name, int age = 0}) { print('Name: $name, Age: $age'); }
8. 关键字
• this:当前类的实例。
• new:可以省略的关键字,用于实例化对象。
• super:用于调用父类的方法或构造函数。
• extends:用于继承类。
• implements:用于实现接口。
• mixin:用于混入类的行为,类似多重继承。
• abstract:声明抽象类,不能被实例化。
• static:声明静态成员,属于类而非实例。
• final 和 const:用于声明常量。
9. 集合类型
-
List(列表)
List是有序的集合,允许重复元素。Dart的List可以存储任意类型的对象,是开发中最常用的数据结构之一。var numbers = [1, 2, 3, 4, 5];
- 特点:
- 有序性:元素按插入顺序排列,支持通过索引访问元素。
- 允许重复:列表中的元素可以重复出现。
- 类型声明:可以是泛型类型,如List<int>、List<String>。
- 动态大小:可以使用List的构造函数指定固定大小的列表,或者动态大小的列表。
- 常用操作
-
创建列表:
var numbers = [1, 2, 3]; // 自动推断为 List<int> var fruits = <String>['apple', 'banana', 'cherry'];
-
访问元素:
var firstFruit = fruits[0]; // 通过索引访问
-
修改元素:
fruits[1] = 'mango'; // 修改索引1位置的值
-
添加元素:
fruits.add('orange'); // 向列表末尾添加
-
删除元素:
fruits.remove('banana'); // 移除指定元素
-
遍历列表:
for (var fruit in fruits) { print(fruit); }
-
- 特点:
-
Map(字典/哈希表)
Map是一种键值对存储结构,键是唯一的,而值可以是任意类型。Map类似于其他语言中的哈希表或字典,用于快速查找和存储与键关联的值。
var person = {'name': 'Alice', 'age': 30};
-
特点:
-
键值对:Map通过键来查找对应的值,键是唯一的,但值可以重复。
-
无序性:Map的键值对是无序存储的。
-
键类型和值类型:Map可以是泛型类型,如Map<String, int>表示键为字符串,值为整数。
-
-
常用操作:
-
创建Map:
var person = {'name': 'Alice', 'age': 30};
-
添加键值对:
person['email'] = 'alice@example.com';
-
访问值:
var name = person['name']; // 通过键访问值
-
删除键值对:
person.remove('age');
-
遍历Map:
person.forEach((key, value) { print('$key: $value'); });
-
检查键是否存在:
var hasName = person.containsKey('name');
-
-
-
Set(集合)
Set是一种无序且元素唯一的集合,主要用于存储没有重复元素的数据。Set的查找、插入、删除操作的效率较高,尤其在需要保证唯一性的场景下非常适用。var uniqueNumbers = {1, 2, 3, 4, 5};
-
特点:
- 无序性:Set中的元素没有固定的顺序。
- 唯一性:每个元素都是唯一的,不能重复。
- 高效操作:Set的插入和查找操作非常高效。
-
常用操作:
-
创建集合:
var uniqueNumbers = <int>{1, 2, 3, 4};
-
添加元素:
uniqueNumbers.add(5); // 添加元素
-
删除元素:
uniqueNumbers.remove(2); // 删除元素
-
检查元素:
var containsThree = uniqueNumbers.contains(3); // 检查是否包含
-
集合运算:
-
交集:
var setA = {1, 2, 3}; var setB = {3, 4, 5}; var intersection = setA.intersection(setB); // 结果:{3}
-
并集:
var union = setA.union(setB); // 结果:{1, 2, 3, 4, 5}
-
-
-
-
Dart 集合类型对比总结
类型 是否有序 是否允许重复 常用场景 List 有序 允许 需要按顺序存储和访问数据 Set 无序 不允许 需要唯一性保证的数据集合 Map 无序(键) 不适用 快速查找键对应的值
10. 异常处理
-
try-catch-finally:用于捕获和处理异常。
try { var result = 10 ~/ 0; } catch (e) { print('Error: $e'); } finally { print('This will always execute'); }