【Flutter】Dart:库

在 Dart 中,(Library)是组织和重用代码的基本方式。通过库,我们可以将代码分割成模块化的部分,方便管理和共享,同时避免命名冲突。Dart 提供了大量内置库,用于支持常见的功能,比如数学运算、数据转换、文件读写等。此外,开发者也可以创建自定义库,并在项目中导入和使用。

本教程将详细介绍 Dart 库的相关概念,涵盖库的声明、导入方式、常用核心库、数学库、数据转换库以及输入输出库的使用。

库的声明与导入

库的声明

在 Dart 中,每个 Dart 文件都是一个库。如果要明确声明一个文件为库,可以使用 library 关键字来定义库名称。

dart 复制代码
library my_library;

void greet() {
  print('Hello from my library');
}

在上面的例子中,我们声明了一个名为 my_library 的库。虽然在 Dart 中,声明库的名称并不是强制的,但对于大型项目,这可以帮助我们更清晰地组织代码。

库的导入

Dart 通过 import 关键字来导入其他库中的代码。在 Dart 中,库的导入有几种不同的方式:

  • 导入整个库:这是最常见的导入方式,直接将整个库导入到当前文件中。

    dart 复制代码
    import 'package:my_library/my_library.dart';
  • 导入特定部分 :我们可以选择导入库中的特定部分,而不是整个库。通过 show 关键字可以指定导入的部分。

    dart 复制代码
    import 'package:my_library/my_library.dart' show greet;
  • 隐藏特定部分 :通过 hide 关键字可以隐藏不需要的部分,只导入库中的其他内容。

    dart 复制代码
    import 'package:my_library/my_library.dart' hide greet;
  • 重命名库 :通过 as 关键字,我们可以为库定义一个别名,这样在使用库中的成员时,可以避免命名冲突。

    dart 复制代码
    import 'package:my_library/my_library.dart' as lib;
    
    void main() {
      lib.greet();  // 使用别名调用库中的方法
    }

Dart 核心库

Dart 提供了丰富的 核心库,这些库是 Dart 语言的基础部分,包含了常用的数据类型、集合操作、异步支持等功能。核心库可以直接使用,无需导入。

常用核心库

  • dart:core :这是 Dart 的默认库,包含了 Dart 的基础数据类型和集合类型,如 intStringListMap 等。这个库是默认导入的,无需手动导入。

  • dart:async :提供了 Dart 的异步支持,包含 FutureStream 等异步编程模型。

  • dart:math :提供了数学运算相关的函数和常量,如 pisqrtsin 等。

  • dart:convert:提供了数据转换功能,支持 JSON 编码/解码、Base64 编码等。

  • dart:io:提供了文件和网络 I/O 操作的 API。

数学库 dart:math

Dart 的数学库 dart:math 提供了丰富的数学函数和常量,适用于数学运算和几何计算。该库需要手动导入:

dart 复制代码
import 'dart:math';

常用数学函数

dart:math 提供了许多常用的数学函数,如:

  • sqrt(double value):计算平方根。
  • pow(num base, num exponent):计算幂值。
  • sin(double radians):计算弧度的正弦值。
  • cos(double radians):计算弧度的余弦值。
  • tan(double radians):计算弧度的正切值。

示例:

dart 复制代码
import 'dart:math';

void main() {
  double angle = pi / 4;  // 45 度,转换为弧度
  print('sin(45°) = ${sin(angle)}');
  print('cos(45°) = ${cos(angle)}');
  print('sqrt(16) = ${sqrt(16)}');
  print('2^3 = ${pow(2, 3)}');
}

输出:

sin(45°) = 0.7071067811865475
cos(45°) = 0.7071067811865475
sqrt(16) = 4.0
2^3 = 8

数据转换库 dart:convert

Dart 提供了 dart:convert 库,用于处理数据的编码和解码,包括常用的 JSON 和 Base64 操作。需要手动导入:

dart 复制代码
import 'dart:convert';

JSON 编码/解码

JSON 是常见的数据交换格式,dart:convert 提供了 jsonEncodejsonDecode 函数,用于将 Dart 对象转换为 JSON 字符串,以及将 JSON 字符串解析为 Dart 对象。

示例:

dart 复制代码
import 'dart:convert';

void main() {
  // Dart 对象转 JSON
  var person = {'name': 'Alice', 'age': 30};
  String jsonStr = jsonEncode(person);
  print('JSON String: $jsonStr');

  // JSON 转 Dart 对象
  String jsonString = '{"name": "Bob", "age": 25}';
  Map<String, dynamic> user = jsonDecode(jsonString);
  print('Dart Map: $user');
}

输出:

JSON String: {"name":"Alice","age":30}
Dart Map: {name: Bob, age: 25}

Base64 编码/解码

dart:convert 还提供了 base64Encodebase64Decode 函数,用于处理 Base64 编码和解码。

示例:

dart 复制代码
import 'dart:convert';

void main() {
  String original = 'Hello, Dart!';
  String encoded = base64Encode(utf8.encode(original));
  print('Base64 Encoded: $encoded');

  String decoded = utf8.decode(base64Decode(encoded));
  print('Base64 Decoded: $decoded');
}

输出:

Base64 Encoded: SGVsbG8sIERhcnQh
Base64 Decoded: Hello, Dart!

输入输出库 dart:io

dart:io 提供了用于文件操作、标准输入输出、网络通信等的 API。它适用于服务器端或命令行程序,但在浏览器环境中不适用。

文件操作

dart:io 提供了 File 类,用于读写文件。

示例:

dart 复制代码
import 'dart:io';

void main() async {
  // 写入文件
  var file = File('example.txt');
  await file.writeAsString('Hello, Dart IO!');

  // 读取文件
  String contents = await file.readAsString();
  print('File Contents: $contents');
}

这个示例展示了如何在文件中写入字符串以及从文件中读取内容。

读取标准输入

dart:io 还提供了 stdin 类,用于从控制台读取用户输入。

示例:

dart 复制代码
import 'dart:io';

void main() {
  print('Enter your name:');
  String name = stdin.readLineSync()!;
  print('Hello, $name!');
}

这个程序将提示用户输入名字,然后输出一个问候语。

自定义库

除了使用 Dart 的内置库,开发者还可以创建自己的库。在 Dart 中,自定义库的创建非常简单,只需将代码模块化并导出需要的部分。

创建库文件

我们可以通过 export 关键字将库的公共部分导出给其他模块使用。例如:

dart 复制代码
// file: lib/my_library.dart
library my_library;

void greet() {
  print('Hello from my library');
}

导入自定义库

一旦定义了自定义库,就可以使用 import 将其引入到其他文件中:

dart 复制代码
import 'package:my_library/my_library.dart';

void main() {
  greet();  // 调用自定义库中的函数
}

总结

Dart 提供了丰富的库系统,允许开发者组织代码、重用功能以及导入内置库或自定义库。通过 Dart 的库,开发者可以轻松访问数学运算、数据转换、输入输出等常见功能模块。掌握 Dart 的库系统,不仅能提高代码的可维护性,还能

相关推荐
AiFlutter41 分钟前
Flutter主题切换
flutter
BAStriver3 小时前
关于Mac打包ipa的配置小结
flutter·macos
ken22324 小时前
flutter vscode app 的输出在哪里
vscode·flutter
Python私教13 小时前
Flutter颜色和主题
开发语言·javascript·flutter
Python私教16 小时前
Flutter主题最佳实践
前端·javascript·flutter
小蜜蜂嗡嗡1 天前
【flutter列表播放器】
flutter
AiFlutter1 天前
Flutter Web部署到子路径的打包指令
flutter
有趣的杰克1 天前
Flutter InkWell组件去掉灰色遮罩
开发语言·javascript·flutter
Python私教1 天前
Flutter动画容器
flutter
wills7772 天前
Flutter 状态管理框架Get
flutter·react native