【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 的库系统,不仅能提高代码的可维护性,还能

相关推荐
liulian09161 小时前
Flutter for OpenHarmony 跨平台开发:单位转换功能实战指南
flutter
千码君20162 小时前
Trae:一些关于flutter和 go前后端开发构建的分享
android·flutter·gradle·android-studio·trae·vibe code
maaath4 小时前
【maaath】Flutter for OpenHarmony 手表配饰应用实战开发
flutter·华为·harmonyos
maaath4 小时前
【maaath】Flutter for OpenHarmony 跨平台计算器应用开发实践
flutter·华为·harmonyos
maaath10 小时前
【maaath】Flutter for OpenHarmony 闹钟时钟应用开发实战
flutter·华为·harmonyos
maaath10 小时前
【maaath】Flutter for OpenHarmony 短信管理应用实战
flutter·华为·harmonyos
maaath11 小时前
【maaath】Flutter for OpenHarmony打造跨平台便签备忘录应用
flutter·华为·harmonyos
千码君201611 小时前
flutter:与Android Studio模拟器的调试分享
android·flutter
xmdy586612 小时前
Flutter+开源鸿蒙实战|智联邻里Day8 Lottie动画集成+url_launcher跳转拨号+个人中心完善+全局UI统一
flutter·开源·harmonyos
liulian091620 小时前
Flutter for OpenHarmony 跨平台开发:颜色选择器功能实战指南
flutter