Flutter功能集合插件heartinz_essentials的使用
Flutter功能集合插件heartinz_essentials的使用
简介
Heartinz Essentials 是一个强大的工具库,专为在 Flutter/Dart 项目中处理频繁操作而设计。无论你需要计算财务数据、货币转换、GST(商品服务税)管理还是处理 ISO 日期时间格式,这个包都能简化你的开发过程。
特性
- 总计计算
- 使用 MRP(市场建议零售价)、销售价格、基础价格和税额来计算总计。
- 货币转换
- 将金额转换为指定货币。
- 将货币值转换为子单位以进行详细计算。
- GST(税)计算
- 准确计算 GST,包括 MRP、销售价格、基础价格和税率的细分。
- 日期和时间工具
- 修改 ISO 时间或在时区之间转换。
- 提取 UTC 中的日边界或计算时间差。
- 以用户友好的格式显示 ISO 日期时间。
- 直观的模块化结构
- 使用像
Essentials.date.splitISO
或Essentials.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
更多关于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'),
),
],
),
),
),
);
}
}
在这个示例中,我们做了以下几件事:
- 导入
heartinz_essentials
插件。 - 在
initState
方法中调用插件提供的方法来获取设备信息、网络状态以及本地存储的值。 - 使用
setState
方法更新UI以显示获取到的信息。 - 提供一个按钮来设置本地存储的值,并刷新显示的值。
请注意,由于heartinz_essentials
是一个假想的插件,上述代码中的HeartinzEssentials
类及其方法(如getDeviceInfo
、isNetworkConnected
、getLocalStorageValue
和setLocalStorageValue
)需要替换为实际插件提供的API。在实际使用时,请参考插件的官方文档以获取正确的API和用法。