Flutter单位转换插件conversion_units的使用

发布于 1周前 作者 vueper 来自 Flutter

Flutter单位转换插件conversion_units的使用

DartUnits

Pub.Dev Build GitHub license GitHub Releases GitHub Issues

该项目的主目的是生成各种测量单位的转换函数(见下文)。代码和单元测试是由UnitCodeGenerator工具自动生成的。因此,任何更改都需要在定义文件中进行。

该包可通过pub.dev获取。

单位转换也适用于其他语言

示例

使用示例

import 'package:conversion_units/conversion_units.dart';

void main() {
  var fahrenheit = Celsius.toFahrenheit(12.0); // 将摄氏度转换为华氏度
  print(fahrenheit); // 输出结果
}

每个测量单位还包括转换到其他单位的函数,例如将每个温度单位转换为其他温度单位。

角度

  • 度 (deg)
  • 梯度 (grad)
  • 弧度 (rad)
  • 角分 (arcmin)
  • 角秒 (arcseconds)
  • 毫弧度 (mrad)

面积

  • 英亩 (acre)
  • 公顷 (hectare)
  • 平方英尺 (feet²)
  • 平方英寸 (inch²)
  • 平方公里 (km²)
  • 平方米 (m²)
  • 平方英里 (mile²)
  • 平方码 (yard²)

数据存储

  • 比特 (b)
  • 吉比特 (Gb)
  • 吉字节 (GB)
  • 千字节 (KB)
  • 兆比特 (Mb)
  • 兆字节 (MB)
  • 太比特 (Tb)
  • 太字节 (TB)

数据传输速率

  • 比特每秒 (bps)
  • 吉比特每秒 (Gbps)
  • 吉字节每秒 (GBps)
  • 千比特每秒 (kbps)
  • 千字节每秒 (kBps)
  • 兆比特每秒 (Mbps)
  • 兆字节每秒 (MBps)
  • 太比特每秒 (Tbps)
  • 太字节每秒 (TBps)

能量

  • 英热 (btu)
  • 卡路里 (cal)
  • 电子伏 (eV)
  • 英尺磅 (ftlb)
  • 焦耳 (J)
  • 千卡 (kCal)
  • 千焦 (kJ)
  • 千瓦时 (kWh)
  • 美国热 (ustherm)
  • 瓦时 (Wh)

  • 达因 (dyn)
  • 千克力 (kp)
  • 牛顿 (N)
  • 磅达 (pdl)

频率

  • 吉赫 (GHz)
  • 赫兹 (Hz)
  • 千赫 (kHz)
  • 兆赫 (MHz)

燃油经济性

  • 每升公里 (kml)
  • 每百公里升 (l100km)
  • 每加仑英里 (mpg)
  • 每加仑美国英里 (usmpg)

长度

  • 厘米 (cm)
  • 英尺 (ft)
  • 英寸 (inch)
  • 公里 (km)
  • 米 (m)
  • 英里 (mile)
  • 毫米 (mm)
  • 海里 (NM)
  • 码 (yard)

光能

  • 流明小时 (lmh)
  • 流明分钟 (lmmin)
  • 流明秒 (lms)
  • 泰尔伯特 (T)

磁动势

  • 安培匝 (AT)
  • 吉尔伯特 (Gi)

质量

  • 克拉 (ct)
  • 克 (g)
  • 千克 (kg)
  • 毫克 (mg)
  • 盎司 (oz)
  • 磅 (lb)
  • 石 (stone)
  • 吨 (tonne)

功率

  • 机械马力 (hp)
  • 计算马力 (ps)

压力

  • 大气压 (atm)
  • 巴 (b)
  • 帕斯卡 (Pa)
  • 磅每平方英寸 (psi)
  • 托 (Torr)

速度

  • 英尺每秒 (fps)
  • 公里每小时 (kph)
  • 节 (knot)
  • 米每秒 (mps)
  • 英里每小时 (mph)

温度

  • 摄氏度 ©
  • 华氏度 (F)
  • 开尔文 (K)
  • 热力学温标 ®
  • 雷姆 ®

时间

  • 世纪 (century)
  • 天 (day)
  • 十年 (decade)
  • 小时 (hour)
  • 微秒 (microsecond)
  • 毫秒 (millisecond)
  • 分钟 (minute)
  • 月 (month)
  • 纳秒 (nanosecond)
  • 秒 (second)
  • 星期 (week)
  • 年 (year)

体积

  • 立方英尺 (feet³)
  • 立方英寸 (inch³)
  • 立方米 (m³)
  • 液盎司 (floz)
  • 加仑 (gal)
  • 千升 (kl)
  • 升 (l)
  • 毫升 (ml)
  • 桶 (oilbarrel)
  • 品脱 (pt)
  • 夸脱 (qt)
  • 汤匙 (tbsp)
  • 茶匙 (tsp)
  • 美式杯 (uscup)
  • 美式液盎司 (usfloz)
  • 美式加仑 (usgal)
  • 美式品脱 (uspt)
  • 美式夸脱 (usqt)
  • 美式汤匙 (ustbsp)
  • 美式茶匙 (ustsp)

示例应用

以下是一个完整的示例代码,演示了如何使用conversion_units插件进行单位转换:

import 'package:flutter/material.dart';
import 'package:conversion_units/conversion_units.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('单位转换示例'),
        ),
        body: UnitConverter(),
      ),
    );
  }
}

class UnitConverter extends StatefulWidget {
  [@override](/user/override)
  _UnitConverterState createState() => _UnitConverterState();
}

class _UnitConverterState extends State<UnitConverter> {
  double _inputValue = 0.0;
  String _fromUnit = 'C'; // 默认从摄氏度开始
  String _toUnit = 'F'; // 默认转换为华氏度
  String _result = '';

  void _convert() {
    double result;
    switch (_fromUnit) {
      case 'C':
        if (_toUnit == 'F') {
          result = Celsius.toFahrenheit(_inputValue);
        } else if (_toUnit == 'K') {
          result = Celsius.toKelvin(_inputValue);
        }
        break;
      case 'F':
        if (_toUnit == 'C') {
          result = Fahrenheit.toCelsius(_inputValue);
        } else if (_toUnit == 'K') {
          result = Fahrenheit.toKelvin(_inputValue);
        }
        break;
      // 更多情况可以在这里添加
      default:
        result = _inputValue;
    }
    setState(() {
      _result = result.toStringAsFixed(2);
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(16.0),
      child: Column(
        children: [
          TextField(
            decoration: InputDecoration(labelText: '输入值'),
            onChanged: (value) {
              _inputValue = double.tryParse(value) ?? 0.0;
            },
          ),
          DropdownButton<String>(
            value: _fromUnit,
            items: ['C', 'F', 'K'].map((String unit) {
              return DropdownMenuItem<String>(
                value: unit,
                child: Text(unit),
              );
            }).toList(),
            onChanged: (value) {
              setState(() {
                _fromUnit = value!;
              });
            },
          ),
          DropdownButton<String>(
            value: _toUnit,
            items: ['C', 'F', 'K'].map((String unit) {
              return DropdownMenuItem<String>(
                value: unit,
                child: Text(unit),
              );
            }).toList(),
            onChanged: (value) {
              setState(() {
                _toUnit = value!;
              });
            },
          ),
          ElevatedButton(
            onPressed: _convert,
            child: Text('转换'),
          ),
          Text('结果: $_result'),
        ],
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用conversion_units插件来进行单位转换的代码示例。这个插件可以帮助你进行长度、重量、体积、温度等多种单位的转换。

首先,你需要在你的pubspec.yaml文件中添加conversion_units依赖:

dependencies:
  flutter:
    sdk: flutter
  conversion_units: ^latest_version  # 请替换为实际的最新版本号

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

安装完成后,你可以在你的Flutter项目中导入并使用这个插件。以下是一个简单的示例,展示如何将公里转换为米:

import 'package:flutter/material.dart';
import 'package:conversion_units/conversion_units.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Unit Conversion Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: UnitConversionScreen(),
    );
  }
}

class UnitConversionScreen extends StatefulWidget {
  @override
  _UnitConversionScreenState createState() => _UnitConversionScreenState();
}

class _UnitConversionScreenState extends State<UnitConversionScreen> {
  final TextEditingController _controller = TextEditingController();
  String _convertedValue = '';

  void _convertUnits() {
    double value;
    try {
      value = double.parse(_controller.text);
    } catch (e) {
      setState(() {
        _convertedValue = 'Please enter a valid number';
      });
      return;
    }

    // 使用conversion_units插件进行转换
    final LengthConverter lengthConverter = LengthConverter();
    double kilometers = value;
    double meters = lengthConverter.kilometersToMeters(kilometers);

    setState(() {
      _convertedValue = '$kilometers kilometers is equal to $meters meters';
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Unit Conversion Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            TextField(
              controller: _controller,
              decoration: InputDecoration(
                labelText: 'Enter value in kilometers',
              ),
              keyboardType: TextInputType.number,
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _convertUnits,
              child: Text('Convert'),
            ),
            SizedBox(height: 20),
            Text(
              _convertedValue,
              style: TextStyle(fontSize: 18),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,用户可以输入一个以公里为单位的数值,然后点击“Convert”按钮将其转换为米。LengthConverter类提供了从公里到米的转换方法。

conversion_units插件还提供了其他类型的转换器,例如WeightConverterVolumeConverterTemperatureConverter,你可以根据需要来使用它们。例如,使用WeightConverter将千克转换为磅:

final WeightConverter weightConverter = WeightConverter();
double kilograms = value; // 假设value是要转换的千克数
double pounds = weightConverter.kilogramsToPounds(kilograms);

希望这个示例能帮助你理解如何在Flutter项目中使用conversion_units插件进行单位转换。如果你有更具体的需求或问题,请随时提问!

回到顶部