Flutter工具集插件np_utils的使用

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

Flutter工具集插件np_utils的使用

np_utils 是一个纯 Dart 包,提供了许多尼泊尔实用工具类,如日期转换器、日期格式化器、日期时间、尼泊尔数字、尼泊尔 Unicode 和尼泊尔时刻等。

插件信息

工具类

  • NepaliDateTime
  • DateConversion
  • NepaliDateFormat
  • NepaliNumberFormat
  • NepaliUnicode
  • NepaliMoment
  • 许多其他功能即将推出

语言设置

默认情况下,尼泊尔实用工具类的语言可以设置为:

void main(){
    NpUtils(Language.nepali);
}

这完全是可选的。如果没有设置,默认语言将是英语。

尼泊尔日期时间

该类类似于 dart:coreDateTime 类,不同之处在于它使用的是巴克塔普萨姆巴特历(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

1 回复

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


当然,np_utils 是一个在 Flutter 社区中可能不太知名的工具集插件,但假设它是一个提供了一系列实用功能的插件,我们可以基于一般工具集插件的常规功能来编写一些示例代码,以展示如何在 Flutter 应用中使用它。

请注意,由于我无法直接访问 np_utils 的具体文档和源代码,以下示例将基于假设的功能进行编写。如果 np_utils 插件确实存在且功能有所不同,请根据实际情况进行调整。

假设功能

  1. 字符串处理:如反转字符串、首字母大写等。
  2. 日期时间处理:如格式化日期、计算时间差等。
  3. 设备信息获取:如获取设备型号、操作系统版本等。

示例代码

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 或其他社区提供的实用工具包。
  • 确保在使用任何第三方插件时,都仔细阅读其文档,了解其功能、用法以及可能的限制或已知问题。
回到顶部