Flutter功能扩展插件double_extension的使用

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

Flutter功能扩展插件double_extension的使用


Features(功能)

该插件提供了对double类型的功能扩展,包括从动态数据解析为double类型、设置默认值、限制允许的值范围等功能。这些功能可以帮助开发者更安全地处理数据类型转换。


Getting Started(入门指南)

要开始使用double_extension插件,首先需要将其添加到您的pubspec.yaml文件中:

dependencies:
  double_extension: ^1.0.0 # 替换为最新版本号

然后运行以下命令以安装依赖:

flutter pub get

Usage(使用示例)

以下是使用double_extension插件的完整示例代码:

import 'package:double_extension/double_extension.dart'; // 导入扩展包

void main() {
  // 创建一个包含不同类型值的Map
  final map = {
    'nullValue': null, // 空值
    'notNullValue': 3.14, // 正常数值
    'notAllowableValue': 5 // 不在允许范围内
  };

  // 打印原始Map结构
  print('Map: ${map.toStructuredString()}'); 

  // 示例1:从空值解析,使用默认值
  print('\n从空值解析,使用默认值:');
  print(DoubleExtension.fromDynamicE(map['nullValue'], defaultValue: 1.1));

  // 示例2:从不存在的键解析,使用默认值
  print('\n从不存在的键解析,使用默认值:');
  print(DoubleExtension.fromDynamicE(map['expectedValue'], defaultValue: 2.2));

  // 示例3:从正常数值解析,默认值未使用
  print('\n从正常数值解析,默认值未使用:');
  print(DoubleExtension.fromDynamicE(map['notNullValue'], defaultValue: 3.3));

  // 示例4:从不允许的值解析,抛出异常
  print('\n从不允许的值解析,抛出异常:');
  try {
    final value = DoubleExtension.fromDynamicE(
      map['notAllowableValue'], // 值不在允许范围内
      defaultValue: 1.0,
      allowableValues: {1.0, 2.0, 3.0} // 允许的值集合
    );
  } catch (e) {
    print(e); // 捕获并打印异常信息
  }

  // 示例5:自定义异常信息
  print('\n带名称参数的示例,自定义异常信息:');
  try {
    final value = DoubleExtension.fromDynamicE(
      map['notAllowableValue'], // 值不在允许范围内
      name: 'notAllowableValue', // 参数名称
      defaultValue: 1.0,
      allowableValues: {1.0, 2.0, 3.0} // 允许的值集合
    );
  } catch (e) {
    print(e); // 捕获并打印异常信息
  }

  // 示例6:禁用空值检查
  print('\n禁用空值检查:');
  final valueWithNullCheckDisabled = DoubleExtension.fromDynamicE(
    map['nullValue'], // 允许空值
    nullAllowed: true // 启用空值支持
  );
  print(valueWithNullCheckDisabled);
}

Additional Information(更多信息)

  • 贡献与反馈: 如果您发现任何问题或有改进建议,请提交至GitHub仓库。

  • 许可证: 该插件遵循MIT开源协议,您可以自由使用、修改和分发。


输出示例

运行上述代码后,输出结果如下:

Map: {
  nullValue: null,
  notNullValue: 3.14,
  notAllowableValue: 5
}

从空值解析,使用默认值:
1.1

从不存在的键解析,使用默认值:
2.2

从正常数值解析,默认值未使用:
3.14

从不允许的值解析,抛出异常:
double_extension.NotAllowableValueException: The value '5' for parameter 'notAllowableValue' is not allowed. Allowed values are {1.0, 2.0, 3.0}.

带名称参数的示例,自定义异常信息:
double_extension.NotAllowableValueException: The value '5' for parameter 'notAllowableValue' is not allowed. Allowed values are {1.0, 2.0, 3.0}.

禁用空值检查:
null

更多关于Flutter功能扩展插件double_extension的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter功能扩展插件double_extension的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


double_extension 是一个用于 Flutter 的 Dart 扩展插件,它为 double 类型提供了一些便捷的扩展方法,使得在处理浮点数时更加方便。以下是如何使用 double_extension 插件的详细步骤和示例。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  double_extension: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的 Dart 文件中导入 double_extension 包:

import 'package:double_extension/double_extension.dart';

3. 使用扩展方法

double_extension 提供了一些常用的扩展方法,以下是一些常见的用法示例:

3.1 四舍五入

double 值四舍五入到指定的小数位数:

double number = 3.14159;
double rounded = number.roundTo(2);  // 3.14

3.2 转换为百分比

double 值转换为百分比字符串:

double number = 0.75;
String percentage = number.toPercentageString();  // "75%"

3.3 判断是否为整数

判断 double 值是否为整数:

double number = 3.0;
bool isInteger = number.isInteger;  // true

3.4 转换为货币格式

double 值转换为货币格式的字符串:

double number = 1234.56;
String currency = number.toCurrencyString();  // "\$1,234.56"

3.5 限制范围

double 值限制在指定的范围内:

double number = 10.5;
double clamped = number.clamp(0, 10);  // 10.0

3.6 转换为时间格式

double 值(表示秒数)转换为时间格式的字符串:

double seconds = 3661.0;
String time = seconds.toTimeString();  // "1:01:01"

4. 完整示例

以下是一个完整的示例,展示了如何使用 double_extension 插件中的一些扩展方法:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    double number = 3.14159;

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Double Extension Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text('Original Number: $number'),
              Text('Rounded to 2 decimal places: ${number.roundTo(2)}'),
              Text('Percentage: ${number.toPercentageString()}'),
              Text('Is Integer: ${number.isInteger}'),
              Text('Currency: ${number.toCurrencyString()}'),
              Text('Clamped between 0 and 3: ${number.clamp(0, 3)}'),
              Text('Time Format: ${3661.0.toTimeString()}'),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!