Flutter工具集插件np_utils的使用
Flutter工具集插件np_utils的使用
np_utils
是一个纯 Dart 包,提供了许多尼泊尔实用工具类,如日期转换器、日期格式化器、日期时间、尼泊尔数字、尼泊尔 Unicode 和尼泊尔时刻等。
插件信息
工具类
- NepaliDateTime
- DateConversion
- NepaliDateFormat
- NepaliNumberFormat
- NepaliUnicode
- NepaliMoment
- 许多其他功能即将推出
语言设置
默认情况下,尼泊尔实用工具类的语言可以设置为:
void main(){
NpUtils(Language.nepali);
}
这完全是可选的。如果没有设置,默认语言将是英语。
尼泊尔日期时间
该类类似于 dart:core
的 DateTime
类,不同之处在于它使用的是巴克塔普萨姆巴特历(Bikram Sambat)。
NepaliDateTime gorkhaEarthQuake = NepaliDateTime.parse('2072-01-12T11:56:25');
print(gorkhaEarthQuake.year); // 2072
NepaliDateTime currentTime = NepaliDateTime.now();
print(currentTime.toIso8601String()); //2076-02-01T11:25:46.490980
print(gorkhaEarthQuake.mergeTime(10, 20, 30));
// 2072-01-12 10:20:30.000
日期转换
该类可以将日期从公历(AD)转换为尼泊尔历(BS),反之亦然。
NepaliDateTime nt = DateTime(2019, 8, 03, 14, 30, 15).toNepaliDateTime();
print('In BS = $nt'); //2076-04-18 14:30:15.000
DateTime dt = nt.toDateTime(); //2019-08-03 14:30:15.000
print('In AD = $dt');
尼泊尔日期格式化
该类可以将 NepaliDateTime
格式化为目标格式。
构造函数表
构造函数 | 结果 |
---|---|
d | 18 |
E | Sat |
EEEE | Saturday |
LLL | Shr |
LLLL | Shrawan |
M | 4 |
Md | 4/18 |
MEd | Sat, 4/18 |
MMM | Shr |
MMMd | Shr 18 |
MMMEd | Saturday, Shr 18 |
MMMMM | Shrawan |
MMMMd | Shrawan 18 |
MMMMEEEEd | Saturday, Shrawan 18 |
QQQ | Q2 |
QQQQ | 2nd quarter |
示例
var date1 = NepaliDateFormat.MEd();
var date2 = NepaliDateFormat.MMMMEEEEd();
var date3 = NepaliDateFormat.jms();
print(date1.format(gorkhaEarthQuake)); // Sat, 1/12
print(date2.format(gorkhaEarthQuake)); // Saturday, Baisakh 18
print(date3.format(gorkhaEarthQuake)); // 11:56:00 AM
也可以使用模式字符串指定格式。
示例
var date1 = NepaliDateFormat("yyyy.MM.dd G 'at' HH:mm:ss");
var date2 = NepaliDateFormat("EEE, MMM d, ''yy");
var date3 = NepaliDateFormat("h:mm a");
var date4 = NepaliDateFormat("hh 'o''clock' aa");
var date5 = NepaliDateFormat("yyyy.MMMM.dd GGG hh:mm a");
print(date1.format(gorkhaEarthQuake)); // 2072.01.12 BS at 11:56:25
print(date2.format(gorkhaEarthQuake)); // Saturday, Bai 12, '72
print(date3.format(gorkhaEarthQuake)); // 11:56 am
print(date4.format(gorkhaEarthQuake)); // 11 o'clock AM
print(date5.format(gorkhaEarthQuake)); // 2072.Baishakh.12 Bikram Sambat 11:56 am
注意: 总是用双引号 ("
) 包裹模式字符串。
尼泊尔数字
该类可以将英文数字转换为尼泊尔数字字面量。
var currencyFormat = NepaliNumberFormat(
symbol: 'Rs.',
);
var commaSeparated = NepaliNumberFormat(
decimalDigits: 2,
);
var inWords = NepaliNumberFormat(
inWords: true,
language: Language.NEPALI,
);
var currencyInWords = NepaliNumberFormat(
inWords: true,
language: Language.NEPALI,
isMonetory: true,
decimalDigits: 2,
);
print('123456 -> ${currencyFormat.format(123456)}');
// 123456 -> 1,23,456
print('123456789.6548 -> ${commaSeparated.format(123456789.6548)}');
// 123456789.6548 -> 12,34,56,789.65
print('123456 -> ${inWords.format(123456)}');
// 123456 -> 1 lakh 23 thousand 4 hundred 56
print('123456789.6548 -> ${currencyInWords.format(123456789.6548)}');
// 123456789.6548 -> १२ करोड ३४ लाख ५६ हजार ७ सय ८९ रुपैया ६५ पैसा
尼泊尔Unicode
该类可以将英文文字(罗马字母)转换为尼泊尔Unicode。
print(NepaliUnicode.convert("sayau' thu''gaa fUlakaa haamii, euTai maalaa nepaalii"));
print(NepaliUnicode.convert("saarwabhauma bhai failiekaa, mecii-mahaakaalii\n"));
// सयौं थुँगा फूलका हामी, एउटै माला नेपाली
// सार्वभौम भै फैलिएका, मेची-महाकाली
如果需要实时转换(即边输入边转换),则设置 live: true
。
NepaliUnicode.convert(textFromTextField, live: true);
尼泊尔时刻
该类可以根据提供的日期生成模糊的时间戳。
print(NepaliMoment.fromBS(NepaliDateTime.parse('2076-03-22T08:41:14')));
// २२ दिन पछि
print(NepaliMoment.fromBS(NepaliDateTime.parse('2076-02-32T18:25:14'),
referenceDate: NepaliDateTime.parse('2076-02-32T18:34:14')));
// ९ मिनेट पहिले
print(NepaliMoment.fromAD(DateTime.parse('2019-06-02T18:22:14'),
referenceDate: DateTime.parse('2019-06-15T18:34:14')));
// १३ दिन पहिले
完整示例
完整的示例代码如下:
// Copyright 2019 Sarbagya Dhaubanjar. All rights reserved.
// Use of this source code is governed by a MIT license that can be
// found in the LICENSE file.
// ignore_for_file: avoid_print
import 'package:np_utils/np_utils.dart';
void main(List<String> arguments) {
heading('Nepali Date Time');
final gorkhaEarthQuake = NepaliDateTime.parse('2072-01-12T11:56:25');
//print(
// 'Gorkha Earquake Details\nYear = ${gorkhaEarthQuake.year}\nMonth = ${gorkhaEarthQuake.month}\nDay = ${gorkhaEarthQuake.day}\nHour = ${gorkhaEarthQuake.hour}\nMinute = ${gorkhaEarthQuake.minute}');
//print('\nCurrent NepaliDateTime = ${NepaliDateTime.now()}');
heading('Date Converter');
final nt = DateTime(2019, 5, 14).toNepaliDateTime();
print('In BS = $nt');
final dt = nt.toDateTime();
print('In AD = $dt');
print(NepaliDateTime.now().toIso8601String());
heading('Nepali Date Formatter');
final date1 = NepaliDateFormat("yyyy.MM.dd G 'at' HH:mm:ss");
final date2 = NepaliDateFormat("EEE, MMM d, ''yy");
final date3 = NepaliDateFormat('h:mm a');
final date4 = NepaliDateFormat("hh 'o''clock' aa");
final date5 = NepaliDateFormat('yyyy.MMMM.dd GGG hh:mm a');
print(date1.format(gorkhaEarthQuake));
print(date2.format(gorkhaEarthQuake));
print(date3.format(gorkhaEarthQuake));
print(date4.format(gorkhaEarthQuake));
print(date5.format(gorkhaEarthQuake));
heading('Nepali Number Format');
final numberFormat = NepaliNumberFormat(
symbol: 'Rs.',
);
final commaSeparated = NepaliNumberFormat(
decimalDigits: 2,
);
final numberFormatWithDefaultDelimiter = NepaliNumberFormat(symbol: 'Rs.');
final numberFormatWithEmptyDelimiter = NepaliNumberFormat(
symbol: 'Rs.',
delimiter: '',
);
// Sets default language for nepali utilities to be Nepali.
NpUtils(Language.nepali);
final inWords = NepaliNumberFormat(
inWords: true,
language: Language.nepali,
);
final currencyInWords = NepaliNumberFormat(
inWords: true,
language: Language.nepali,
isMonetory: true,
);
print('123456 -> ${numberFormat.format(123456)}');
print('123456789.6548 -> ${commaSeparated.format(123456789.6548)}');
print('123456 -> ${inWords.format(123456)}');
print('123456789.6548 -> ${currencyInWords.format(123456789.6548)}');
heading('Number Format With Delimiter');
print('12345 -> ${numberFormatWithDefaultDelimiter.format(12345)}');
print('12345 -> ${numberFormatWithEmptyDelimiter.format(12345)}');
heading('Nepali Unicode');
print(
NepaliUnicode.convert(
"sayau' thu''gaa fUlakaa haamii, euTai maalaa nepaalii",
),
);
print(
NepaliUnicode.convert('saarwabhauma bhai failiekaa, mecii-mahaakaalii\n'),
);
}
void heading(String text) {
final starLineBuffer = StringBuffer();
final padStringBuffer = StringBuffer();
final padding = (40 - text.length) ~/ 2;
starLineBuffer.writeAll([for (var i = 0; i < 40; i++) '*']);
padStringBuffer.writeAll([for (var i = 0; i < padding; i++) ' ']);
print(starLineBuffer);
print(padStringBuffer.toString() + text + padStringBuffer.toString());
print(starLineBuffer);
}
更多关于Flutter工具集插件np_utils的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter工具集插件np_utils的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,np_utils
是一个在 Flutter 社区中可能不太知名的工具集插件,但假设它是一个提供了一系列实用功能的插件,我们可以基于一般工具集插件的常规功能来编写一些示例代码,以展示如何在 Flutter 应用中使用它。
请注意,由于我无法直接访问 np_utils
的具体文档和源代码,以下示例将基于假设的功能进行编写。如果 np_utils
插件确实存在且功能有所不同,请根据实际情况进行调整。
假设功能
- 字符串处理:如反转字符串、首字母大写等。
- 日期时间处理:如格式化日期、计算时间差等。
- 设备信息获取:如获取设备型号、操作系统版本等。
示例代码
1. 添加依赖
首先,在你的 pubspec.yaml
文件中添加 np_utils
依赖(假设它已经在 pub.dev 上发布):
dependencies:
flutter:
sdk: flutter
np_utils: ^x.y.z # 替换为实际版本号
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 np_utils
:
import 'package:np_utils/np_utils.dart';
3. 使用示例
字符串处理
void main() {
String originalString = "hello world";
// 反转字符串
String reversedString = NPUtils.string.reverse(originalString);
print("Reversed String: $reversedString");
// 首字母大写
String capitalizedString = NPUtils.string.capitalize(originalString);
print("Capitalized String: $capitalizedString");
}
日期时间处理
void main() {
DateTime now = DateTime.now();
// 格式化日期
String formattedDate = NPUtils.date.format(now, "yyyy-MM-dd HH:mm:ss");
print("Formatted Date: $formattedDate");
// 计算时间差(例如,与一小时前的比较)
DateTime oneHourAgo = now.subtract(Duration(hours: 1));
Duration difference = NPUtils.date.difference(now, oneHourAgo);
print("Time Difference: ${difference.inHours} hours, ${difference.inMinutes % 60} minutes");
}
设备信息获取
void main() {
// 获取设备型号
String deviceModel = NPUtils.device.model;
print("Device Model: $deviceModel");
// 获取操作系统版本
String osVersion = NPUtils.device.osVersion;
print("OS Version: $osVersion");
}
注意
- 上述代码是基于假设的
np_utils
插件功能编写的。实际使用时,请参考该插件的官方文档和 API 参考。 - 如果
np_utils
插件不存在或功能有所不同,你可能需要寻找类似的 Flutter 工具集插件,如flutter_tools
或其他社区提供的实用工具包。 - 确保在使用任何第三方插件时,都仔细阅读其文档,了解其功能、用法以及可能的限制或已知问题。