模式切换
库与包管理
Dart 提供了强大的库和包管理机制,支持使用内置库、第三方包以及自定义库。
导入库
Dart 使用 import
和 export
关键字来导入和导出库。
使用 import 导入库
import
关键字用于在文件中加载其他库。
导入内置库
Dart 提供了许多内置库,例如
dart:core
(默认导入)、dart:math
、dart:convert
等。dartimport 'dart:math'; void main() { print(sqrt(16)); // 使用 dart:math 中的 sqrt 函数,输出: 4.0 }
导入本地文件
可以导入项目中自定义的 Dart 文件。
dartimport 'utils.dart'; // 导入 utils.dart 文件 void main() { greet('Dart'); }
使用别名
使用
as
为库指定前缀,避免命名冲突。dartimport 'package:my_library/math_utils.dart' as math; void main() { print(math.add(5, 3)); // 调用 math_utils.dart 中的 add 方法 }
部分导入
使用
show
或hide
来导入指定部分或隐藏部分内容。dartimport 'package:my_library/math_utils.dart' show add; import 'package:my_library/math_utils.dart' hide subtract; void main() { add(3, 5); // 只导入了 add 方法 }
使用 export 导出库
export
关键字用于从一个文件中导出其他文件的内容,使其可被其他文件访问。
dart
// utils.dart
export 'math_utils.dart';
export 'string_utils.dart';
使用内置库
Dart 提供了一些常用的内置库,用于常见功能。
dart:core
- 默认导入,包含 Dart 的核心功能,如基本类型(
String
、int
等)。
dartvoid main() { print('Hello, Dart!'); int num = 42; print(num.isEven); // true }
- 默认导入,包含 Dart 的核心功能,如基本类型(
dart:math
- 包含数学相关功能,如随机数生成、三角函数等。
dartimport 'dart:math'; void main() { print(pi); // 圆周率 print(Random().nextInt(100)); // 生成 0-99 的随机整数 }
dart:convert
- 提供 JSON、UTF-8 编码和解码功能。
dartimport 'dart:convert'; void main() { String jsonString = '{"name": "Alice", "age": 30}'; var decoded = jsonDecode(jsonString); print(decoded['name']); // Alice var encoded = jsonEncode({'language': 'Dart', 'year': 2011}); print(encoded); // {"language":"Dart","year":2011} }
dart:io
- 提供文件操作、网络请求等功能,仅适用于非 Web 环境。
dartimport 'dart:io'; void main() { File file = File('example.txt'); file.writeAsStringSync('Hello, Dart!'); print(file.readAsStringSync()); }
第三方包管理
使用 pub.dev
pub.dev
是 Dart 的官方包管理平台,可以浏览和安装第三方包。
查找包
- 访问 pub.dev 搜索所需的包。
安装包
- 在项目的
pubspec.yaml
文件中添加依赖。yamldependencies: http: ^1.0.0
- 使用以下命令安装:bash
dart pub get
- 在项目的
导入包
- 安装成功后,可以在代码中导入使用。
dartimport 'package:http/http.dart' as http; void main() async { var response = await http.get(Uri.parse('https://example.com')); print('Response status: ${response.statusCode}'); }
版本管理
- 使用
^
表示兼容某个主版本。 - 可以指定版本范围:yaml
dependencies: provider: ">=5.0.0 <6.0.0"
本地包和 Git 包
本地包
yamldependencies: my_local_package: path: ../local_packages/my_local_package
Git 包
yamldependencies: my_git_package: git: url: https://github.com/username/repository.git ref: main
综合示例
dart
import 'dart:math';
import 'dart:convert';
import 'package:http/http.dart' as http;
/// 生成随机数并打印
void generateRandom() {
print(Random().nextInt(100)); // 输出 0-99 的随机整数
}
/// 发送 HTTP 请求
Future<void> fetchData() async {
var response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/posts/1'));
var data = jsonDecode(response.body);
print(data['title']);
}
void main() {
generateRandom();
fetchData();
}