Flutter功能集合插件heartinz_essentials的使用

Flutter功能集合插件heartinz_essentials的使用

简介

Heartinz Essentials 是一个强大的工具库,专为在 Flutter/Dart 项目中处理频繁操作而设计。无论你需要计算财务数据、货币转换、GST(商品服务税)管理还是处理 ISO 日期时间格式,这个包都能简化你的开发过程。

特性

  • 总计计算
    • 使用 MRP(市场建议零售价)、销售价格、基础价格和税额来计算总计。
  • 货币转换
    • 将金额转换为指定货币。
    • 将货币值转换为子单位以进行详细计算。
  • GST(税)计算
    • 准确计算 GST,包括 MRP、销售价格、基础价格和税率的细分。
  • 日期和时间工具
    • 修改 ISO 时间或在时区之间转换。
    • 提取 UTC 中的日边界或计算时间差。
    • 以用户友好的格式显示 ISO 日期时间。
  • 直观的模块化结构
    • 使用像 Essentials.date.splitISOEssentials.currency.toCurrency 这样的干净 API 来获得无缝的开发体验。

开始使用

要使用此包,确保你已安装最新版本的 Dart/Flutter SDK。

安装

在你的 pubspec.yaml 文件中添加以下内容:

dependencies:
  heartinz_essentials: ^1.0.0

然后运行以下命令来获取该包:

flutter pub get

示例代码

以下是使用 Heartinz Essentials 的一些示例代码:

import 'package:heartinz_essentials/heartinz_essentials.dart';

void main() {
  // 创建 Essentials 实例
  final essentials = Essentials();

  // 示例 1: 总计计算
  // GrandTotalModel grandTotal = essentials.calculateGrandTotal(
  //   totalMrp: essentials.toSubunit(0.5, "INR"),
  //   totalSalePrice: essentials.toSubunit(0.245, "INR"),
  //   totalBasePrice: essentials.toSubunit(1, "INR"),
  //   totalTaxAmount: 18,
  // );
  // print('/// GRAND TOTAL /// \n ${grandTotal.toMap()}');

  // 示例 2: 货币转换
  double currencyValue = essentials.convertToCurrency(1500, 'USD');
  print('/// CONVERT TO CURRENCY /// \n  $currencyValue');

  // 示例 3: 转换为子单位
  int subunitValue = essentials.convertToSubunits(1500.75, 'USD');
  print('/// CONVERT TO SUBUNITS /// \n  $subunitValue');

  // 示例 4: GST 计算
  GSTResult gstDetails = essentials.gstCalculate(
    mrp: essentials.toSubunit(3.534342, "INR"),
    salePrice: essentials.toSubunit(4234234, "INR"),
    basePrice: essentials.toSubunit(534534, "INR"),
    taxPercent: 43242,
    quantity: 43242243,
    lock: "SALEPRICE",
  );
  // print('/// GST DETAILS /// \n ${gstDetails.toJson()}');

  // 示例 5: 日期和时间操作 - ISO 转换为显示格式
  String isoString = "2024-12-16T15:30:00Z";
  var displayTime = essentials.displayIso(isoString);
  print('/// DISPLAY IN ISO /// \n $displayTime');

  // 示例 6: 将 ISO 转换为所有格式
  var isoToAll = essentials.isoToAll(isoString);
  print('/// CONVERT TO ISO /// \n  $isoToAll');

  // 示例 7: 转换为目标时区
  String targetTimeZone = "Asia/Kolkata";
  var timeInTargetZone = essentials.toTimeZone(isoString, targetTimeZone);
  print(
      '/// CONVERT TO TARGET TIME ZONE /// \n $targetTimeZone: $timeInTargetZone');

  // 示例 8: 按时区获取当前时间
  var currentTime = essentials.currentTimeByTimeZone("Asia/Kolkata");
  print('/// CURRENT TIME BY TIME ZONE /// \n  $currentTime');

  // 示例 9: UTC 中的日边界
  String isoDateStr = "2024-12-16T15:30:00Z";
  var dayBoundaries = essentials.dayBoundariesInUTC(isoDateStr);
  print('/// DAY BOUNDRIES /// \n  $dayBoundaries');

  // 示例 10: 两个日期之间的差异
  var timeDifference =
      essentials.timeDifference("2024-12-16T15:30:00Z", "2024-12-17T16:30:00Z");
  print('/// TIME DIFFERENCE /// \n $timeDifference');

  // 示例 11: 通过持续时间修改 ISO 时间
  String modifiedIsoTime = essentials.modifyIso(isoString, Duration(hours: 2));
  print('/// MODIFY ISO TIME BY DURATION /// \n  $modifiedIsoTime');

  // 示例 12: 分割 ISO 字符串
  var splitIso = essentials.splitIso(isoString);
  print('/// SPLIT ISO /// \n $splitIso');

  // 示例 13: 将日期转换为 ISO 格式
  String dateStr = "2024-12-16 ";
  String type = "MM-dd-yyyy";
  String timeZone = "Asia/Kolkata";
  String isoFormat =
      essentials.toIso(dateStr: dateStr, type: type, timeZone: timeZone);
  print('/// TO ISO FORMAT /// \n $isoFormat');
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中使用heartinz_essentials插件的示例代码案例。这个插件假设提供了一系列实用的功能集合,但由于这是一个假想的插件,具体功能和API可能会有所不同。为了演示,我将假设该插件包含一些常见的功能,比如设备信息获取、网络状态检测以及简单的本地存储。

首先,确保在你的pubspec.yaml文件中添加该插件依赖:

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

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

接下来,在你的Flutter项目中导入并使用该插件。以下是一个简单的示例代码,展示了如何使用heartinz_essentials插件的一些功能:

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String deviceInfo = '';
  String networkStatus = '';
  String localStorageValue = '';

  @override
  void initState() {
    super.initState();
    _getDeviceInfo();
    _getNetworkStatus();
    _getLocalStorageValue();
  }

  Future<void> _getDeviceInfo() async {
    try {
      DeviceInfo deviceInfoData = await HeartinzEssentials.getDeviceInfo();
      setState(() {
        deviceInfo = 'Brand: ${deviceInfoData.brand}\n'
            'Model: ${deviceInfoData.model}\n'
            'OS Version: ${deviceInfoData.osVersion}';
      });
    } catch (e) {
      print('Error getting device info: $e');
    }
  }

  Future<void> _getNetworkStatus() async {
    try {
      bool isConnected = await HeartinzEssentials.isNetworkConnected();
      setState(() {
        networkStatus = isConnected ? 'Connected to the internet' : 'Not connected to the internet';
      });
    } catch (e) {
      print('Error checking network status: $e');
    }
  }

  Future<void> _getLocalStorageValue() async {
    try {
      String value = await HeartinzEssentials.getLocalStorageValue('myKey');
      setState(() {
        localStorageValue = value ?? 'No value found';
      });
    } catch (e) {
      print('Error getting local storage value: $e');
    }
  }

  Future<void> _setLocalStorageValue() async {
    try {
      await HeartinzEssentials.setLocalStorageValue('myKey', 'Hello, Flutter!');
      setState(() {
        _getLocalStorageValue(); // Refresh the displayed value
      });
    } catch (e) {
      print('Error setting local storage value: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Heartinz Essentials Demo'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Text('Device Info:', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
              Text(deviceInfo),
              SizedBox(height: 16),
              Text('Network Status:', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
              Text(networkStatus),
              SizedBox(height: 16),
              Text('Local Storage Value:', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
              Text(localStorageValue),
              SizedBox(height: 16),
              ElevatedButton(
                onPressed: _setLocalStorageValue,
                child: Text('Set Local Storage Value'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. 导入heartinz_essentials插件。
  2. initState方法中调用插件提供的方法来获取设备信息、网络状态以及本地存储的值。
  3. 使用setState方法更新UI以显示获取到的信息。
  4. 提供一个按钮来设置本地存储的值,并刷新显示的值。

请注意,由于heartinz_essentials是一个假想的插件,上述代码中的HeartinzEssentials类及其方法(如getDeviceInfoisNetworkConnectedgetLocalStorageValuesetLocalStorageValue)需要替换为实际插件提供的API。在实际使用时,请参考插件的官方文档以获取正确的API和用法。

回到顶部