Flutter单位转换插件dart_unitz的使用

Flutter单位转换插件dart_unitz的使用

Dart Unitz 是一个简单且可扩展的单位转换库。

该插件旨在为应用程序提供一个直观且多功能的解决方案,用于执行单位转换。它专注于易用性,提供了用户友好的界面,使开发者能够快速轻松地在多种单位之间进行转换,包括温度、角度等(其他单位正在开发中)。

此外,该库设计为易于扩展,这意味着开发者可以根据应用的具体需求添加新的单位或自定义转换因子。

WIP

  • ✅ 温度
  • ✅ 角度
  • ❌ 长度
  • ❌ 时间
  • ❌ 质量
  • ❌ 电流
  • ❌ 光照强度
  • ❌ 物质的量

使用

基本转换

// 将摄氏度转换为华氏度
final Unit conversion1 = Unitz.convert(
  from: Celsius(100), // 100 摄氏度
  to: Fahrenheit(),   // 转换为华氏度
);

assert(conversion1 == Fahrenheit(212)); // 断言转换结果是否等于 212 华氏度

// 将度数转换为弧度
final Unit conversion2 = Unitz.convert(
  from: Degree(360),  // 360 度
  to: Radian(),       // 转换为弧度
);

assert(conversion2 == Radian(6.28)); // 断言转换结果是否等于 6.28 弧度
assert(conversion2 == Radian(2 * pi)); // 断言转换结果是否等于 2π 弧度

进行单位之间的加减乘除操作

// 定义零摄氏度
final Celsius freezingInCelsius = Celsius(0);
// 定义 212 华氏度
final Fahrenheit boilingInFahrenheit = Fahrenheit(212);

// 将两个单位相加
final Unit result = freezingInCelsius + boilingInFahrenheit;

assert(result == Celsius(100)); // 断言结果是否等于 100 摄氏度

获取格式化的字符串

// 获取 100 摄氏度的格式化字符串
final String formatted1 = Celsius(100).toString();

// 另一种获取格式化字符串的方法
final String formatted2 = '$Celsius(100)';

assert(formatted1 == '100 °C'); // 断言格式化字符串是否等于 "100 °C"
assert(formatted2 == '100 °C'); // 断言格式化字符串是否等于 "100 °C"

完整示例Demo

以下是一个完整的示例代码,展示了如何使用 dart_unitz 插件进行基本的单位转换和操作:

// 忽略对消息断言的建议
import 'package:dart_unitz/dart_unitz.dart';

void main() {
  // 将 100 摄氏度转换为华氏度
  final Unit conversion = Unitz.convert(
    from: Celsius(100),
    to: Fahrenheit(),
  );

  // 断言转换结果是否正确
  assert(conversion == Fahrenheit(212));

  // 定义零摄氏度
  final Celsius freezingInCelsius = Celsius(0);
  // 定义 212 华氏度
  final Fahrenheit boilingInFahrenheit = Fahrenheit(212);

  // 将两个单位相加
  final Unit additionResult = freezingInCelsius + boilingInFahrenheit;

  // 断言结果是否正确
  assert(additionResult == Celsius(100));

  // 获取 100 摄氏度的格式化字符串
  final String formatted = Celsius(100).toString();

  // 断言格式化字符串是否正确
  assert(formatted == '100 °C');
}

更多关于Flutter单位转换插件dart_unitz的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter单位转换插件dart_unitz的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


dart_unitz 是一个用于在 Flutter 和 Dart 应用程序中进行单位转换的插件。它支持多种类型的单位转换,包括长度、质量、时间、温度等。以下是如何使用 dart_unitz 进行单位转换的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 dart_unitz 依赖:

dependencies:
  flutter:
    sdk: flutter
  dart_unitz: ^1.0.0

然后运行 flutter pub get 来安装依赖。

2. 导入包

在 Dart 文件的顶部导入 dart_unitz 包:

import 'package:dart_unitz/dart_unitz.dart';

3. 使用示例

以下是一些使用 dart_unitz 进行单位转换的示例:

长度单位转换

void main() {
  // 将 10 米转换为厘米
  final meters = Meter(10);
  final centimeters = meters.convertTo(Centimeter());
  
  print('10 meters = $centimeters centimeters'); // 输出: 10 meters = 1000.0 centimeters
}

质量单位转换

void main() {
  // 将 5 千克转换为克
  final kilograms = Kilogram(5);
  final grams = kilograms.convertTo(Gram());
  
  print('5 kilograms = $grams grams'); // 输出: 5 kilograms = 5000.0 grams
}

温度单位转换

void main() {
  // 将 25 摄氏度转换为华氏度
  final celsius = Celsius(25);
  final fahrenheit = celsius.convertTo(Fahrenheit());
  
  print('25 Celsius = $fahrenheit Fahrenheit'); // 输出: 25 Celsius = 77.0 Fahrenheit
}

时间单位转换

void main() {
  // 将 2 小时转换为分钟
  final hours = Hour(2);
  final minutes = hours.convertTo(Minute());
  
  print('2 hours = $minutes minutes'); // 输出: 2 hours = 120.0 minutes
}

4. 支持的转换类型

dart_unitz 支持多种类型的单位转换,包括但不限于:

  • 长度:米(Meter)、厘米(Centimeter)、千米(Kilometer)、英尺(Foot)、英寸(Inch)等。
  • 质量:千克(Kilogram)、克(Gram)、磅(Pound)、盎司(Ounce)等。
  • 时间:秒(Second)、分钟(Minute)、小时(Hour)、天(Day)等。
  • 温度:摄氏度(Celsius)、华氏度(Fahrenheit)、开尔文(Kelvin)等。

5. 自定义单位

如果你想使用自定义单位,可以通过继承 Unitz 类来实现。例如:

class CustomUnit extends Unitz {
  final double value;
  
  CustomUnit(this.value) : super();
  
  [@override](/user/override)
  double get baseValue => value * 2; // 自定义转换公式
  
  [@override](/user/override)
  Unitz createInstance(double value) => CustomUnit(value);
}
回到顶部