在 Flutter 中,Dart 语言是核心的编程语言,它以简洁的语法、强类型的特性和高效的执行能力著称。Dart 提供了多种内置类型,包括数字、字符串、布尔、集合类型(如 List、Set、Map)和符文(runes)等。在这篇教程中,我们将深入探讨 Dart 的变量定义、内置类型及其使用方法。
Dart 变量声明与类型推断
在 Dart 中,变量可以通过 var
、final
、const
和明确的类型声明来定义:
var
:类型推断,Dart 会根据赋值推断出变量的类型。final
:定义一个不可重新赋值的变量,但其内容可以改变(适用于 List、Set 等集合类型)。const
:定义一个编译时常量,值在编译时即已确定,不能改变。- 也可以显式地声明类型,例如
int
、String
等。
dart
var name = 'Dart'; // 自动推断为 String 类型
final age = 25; // 不可重新赋值
const pi = 3.1415; // 编译时常量
String language = 'Flutter'; // 明确声明类型
数字类型
Dart 中的数字类型主要分为两种:int
和 double
。
- int:整数类型,表示没有小数部分的数字,64 位的有符号整数。
- double:双精度浮点数,用于表示带小数点的数字。
int 类型
dart
int a = 10;
int b = 5;
int sum = a + b; // 加法
int difference = a - b; // 减法
int product = a * b; // 乘法
int quotient = a ~/ b; // 整除
double 类型
dart
double pi = 3.1415;
double radius = 5.5;
double area = pi * radius * radius; // 计算面积
数字类型的常用方法
Dart 提供了丰富的数字类型方法:
dart
int n = -5;
print(n.abs()); // 取绝对值,输出 5
double num = 5.75;
print(num.ceil()); // 向上取整,输出 6
print(num.floor()); // 向下取整,输出 5
print(num.round()); // 四舍五入,输出 6
字符串类型
Dart 的 String
类型用于表示一系列字符。可以用单引号 ' '
或双引号 " "
来创建字符串,Dart 对两者没有区别。
dart
String greeting = 'Hello, Dart!';
String multiLine = '''这是
多行字符串''';
字符串插值
使用 $
可以轻松将变量或表达式嵌入到字符串中。
dart
String name = 'Flutter';
String message = 'Welcome to $name'; // 插入变量
String complexMessage = '1 + 1 = ${1 + 1}'; // 插入表达式
常用字符串方法
Dart 提供了一些常用的字符串操作方法:
dart
String text = 'Dart is awesome';
print(text.length); // 获取字符串长度
print(text.toUpperCase()); // 转换为大写
print(text.toLowerCase()); // 转换为小写
print(text.contains('awesome')); // 判断是否包含子串
print(text.replaceAll('awesome', 'amazing')); // 替换子串
布尔类型
Dart 的 bool
类型用于表示逻辑上的真 (true
) 或假 (false
)。
dart
bool isFlutterAwesome = true;
bool isDartHard = false;
布尔值通常用于控制流程语句,比如 if
、while
等:
dart
if (isFlutterAwesome) {
print('Flutter is awesome!');
} else {
print('Keep learning!');
}
列表类型(List)
Dart 的 List
是一个有序的、可重复的集合类型,类似于数组。
创建列表
dart
List<int> numbers = [1, 2, 3, 4, 5];
var names = ['Alice', 'Bob', 'Charlie']; // 自动推断为 List<String>
常用操作
dart
numbers.add(6); // 添加元素
print(numbers); // 输出 [1, 2, 3, 4, 5, 6]
numbers.removeAt(0); // 移除第一个元素
print(numbers); // 输出 [2, 3, 4, 5, 6]
print(numbers.length); // 获取长度
print(numbers.contains(3)); // 判断是否包含某个元素,输出 true
列表生成
Dart 允许我们动态生成列表:
dart
List<int> evenNumbers = List.generate(5, (index) => index * 2); // [0, 2, 4, 6, 8]
集合类型(Set)
Set
是一个无序且不可重复的集合,主要用于存储独一无二的值。
创建集合
dart
Set<String> fruits = {'apple', 'banana', 'orange'};
var uniqueNumbers = <int>{1, 2, 3, 4}; // 集合自动推断类型
常用操作
dart
fruits.add('grape'); // 添加元素
print(fruits); // 输出 {apple, banana, orange, grape}
fruits.remove('banana'); // 移除元素
print(fruits); // 输出 {apple, orange, grape}
print(fruits.contains('apple')); // 判断是否包含某个元素,输出 true
映射类型(Map)
Map
是一个键值对的无序集合,键必须是唯一的,但值可以重复。
创建 Map
dart
Map<String, int> scores = {
'Alice': 90,
'Bob': 85,
'Charlie': 88
};
常用操作
dart
print(scores['Alice']); // 通过键获取值,输出 90
scores['Bob'] = 95; // 修改值
print(scores); // 输出 {Alice: 90, Bob: 95, Charlie: 88}
scores.putIfAbsent('Dave', () => 80); // 如果不存在则添加
print(scores); // 输出 {Alice: 90, Bob: 95, Charlie: 88, Dave: 80}
scores.remove('Charlie'); // 删除键值对
print(scores); // 输出 {Alice: 90, Bob: 95, Dave: 80}
符文(Runes)和 Unicode 字符
Dart 使用 Runes
类型来表示 Unicode 字符。字符串在 Dart 中是 UTF-16 编码,但 Runes
可以处理 32 位 Unicode 字符。
dart
String heart = '\u2665'; // 使用 Unicode 表示心形符号
print(heart); // 输出 ♥
可以通过 runes
属性获取字符串的符文:
dart
var emoji = '👋🌍';
emoji.runes.forEach((int rune) {
var character = String.fromCharCode(rune);
print(character); // 输出每个字符
});
总结
在 Dart 中,内置类型包括数字、字符串、布尔、List、Set、Map 和符文,每种类型都有丰富的操作方法和灵活的用法。熟悉这些内置类型的使用,将帮助你更加高效地处理 Flutter 开发中的各种数据操作。
通过掌握这些基础知识,你可以更加自信地在 Flutter 应用中使用 Dart 的强大功能,快速实现各种业务逻辑。