Flutter伊斯兰历(印尼版)插件hijriyah_indonesia的使用

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

Flutter伊斯兰历(印尼版)插件hijriyah_indonesia的使用

简介

hijriyah_indonesia 是一个用于在Flutter应用中处理伊斯兰历(印尼版)的插件。它提供了将公历日期转换为伊斯兰历日期的功能,并支持多种格式化和本地化选项。本文将详细介绍该插件的使用方法,并提供一个完整的示例Demo。

使用方法

1. 获取当前伊斯兰历日期
// 假设当前公历日期是:2022年9月9日 00:27:33
var _today = Hijriyah.now();
print(_today.hYear); // 1444
print(_today.hMonth); // 2
print(_today.hDay); // 14
print(_today.getDayName()); // 14
// 获取当月的天数
print(_today.lengthOfMonth); // 30天
print(_today.toFormat("MMMM dd yyyy")); // Shafar 14 1444
2. 更改语言设置
String locale = 'id'; // 设置为印尼语
Hijriyah.setLocal(locale);
3. 转换公历日期为伊斯兰历日期
// 将公历日期转换为伊斯兰历日期
print(Hijriyah.fromDate(DateTime.parse(dateTime.toString()).toLocal()).toFormat("EEEE, dd MMMM yyyy")); // Jumat, 19 Safar 1446
print(Hijriyah.fromDate(DateTime.parse(dateTime.toString()).toLocal()).toFormat("EE, dd MMMM yyyy")); // Jum, 19 Safar 1446
4. 添加新的语言设置
Hijriyah.addLocale(locale, {
  'long': ...,
  'short': ...,
  'days': ...,
  'short_days': ...
});
Hijriyah.setLocal(locale);
5. 公历转乌玛勒库拉历(Ummalqura)
var h_date = Hijriyah.fromDate(DateTime(2018, 11, 12));
print(h_date.toString()); // 04/03/1444H
print(h_date.getShortMonthName()); // Rab
print(h_date.getLongMonthName()); // Rabiul Awwal
print(h_date.lengthOfMonth); // 29天
6. 检查日期是否有效
var _check_date = Hijriyah();
_check_date.hYear = 1439;
_check_date.hMonth = 11;
_check_date.hDay = 30;
print(_check_date.isValid()); // false -> 这个月只有29天
7. 乌玛勒库拉历转公历
var g_date = Hijriyah();
print(g_date.hijriToGregorian(1444, 7, 27)); // 2022-09-9 00:00:00.000
8. 格式化日期
var _format = Hijriyah.now();
print(_format.fullDate()); // Selasa, 14 Shaffar , 1444 h
print(_format.toFormat("mm dd yy")); // 09 14 39
9. 比较日期
// 假设当前伊斯兰历日期是:Selasa, 14 Shaffar , 1444 h
print(_today.isAfter(1440, 11, 12)); // false
print(_today.isBefore(1440, 11, 12)); // true
print(_today.isAtSameMomentAs(1440, 11, 12)); // false

完整示例Demo

以下是一个完整的Flutter应用程序示例,展示了如何使用 hijriyah_indonesia 插件将公历日期转换为伊斯兰历日期,并在界面上显示。

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

void main() {
  // 设置语言为印尼语
  Hijriyah.setLocal('id');
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        floatingActionButtonTheme: FloatingActionButtonThemeData(
          backgroundColor: Colors.green.shade800,
        ),
        colorScheme: ColorScheme.light(primary: Colors.green.shade800),
      ),
      home: const HomeView(),
    );
  }
}

class HomeView extends StatefulWidget {
  const HomeView({super.key});

  [@override](/user/override)
  State<HomeView> createState() => _HomeViewState();
}

class _HomeViewState extends State<HomeView> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      appBar: AppBar(
        backgroundColor: Colors.white,
        title: const Text(
          'Hijriyah Indonesia',
          style: TextStyle(color: Colors.black),
        ),
        centerTitle: true,
      ),
      body: Center(
        child: Text(
          // 将公历日期2024-08-23转换为伊斯兰历日期并格式化
          Hijriyah.fromDate(DateTime.parse('2024-08-23').toLocal())
              .toFormat("EEEE, dd MMMM yyyy"),
          style: const TextStyle(color: Colors.black, fontSize: 20),
        ),
      ),
    );
  }
}

更多关于Flutter伊斯兰历(印尼版)插件hijriyah_indonesia的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter伊斯兰历(印尼版)插件hijriyah_indonesia的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成和使用hijriyah_indonesia插件的一个基本示例。这个插件主要用于显示和操作伊斯兰历(印尼版)。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  hijriyah_indonesia: ^最新版本号  # 请替换为实际可用的最新版本号

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

2. 导入插件

在你的Dart文件中导入插件:

import 'package:hijriyah_indonesia/hijriyah_indonesia.dart';

3. 使用插件

以下是一个简单的示例,展示如何使用hijriyah_indonesia插件来获取当前日期的伊斯兰历表示:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hijriyah Indonesia Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String hijriDate = "";

  @override
  void initState() {
    super.initState();
    // 获取当前日期并转换为伊斯兰历
    DateTime now = DateTime.now();
    HijriDate hijriNow = convertGregorianToHijri(now);
    setState(() {
      hijriDate = "${hijriNow.year}-${hijriNow.month}-${hijriNow.day}";
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Hijriyah Indonesia Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Current Hijri Date:',
              style: TextStyle(fontSize: 20),
            ),
            Text(
              hijriDate,
              style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
            ),
          ],
        ),
      ),
    );
  }

  // 辅助函数:将公历日期转换为伊斯兰历日期
  HijriDate convertGregorianToHijri(DateTime gregorianDate) {
    int gregorianYear = gregorianDate.year;
    int gregorianMonth = gregorianDate.month;
    int gregorianDay = gregorianDate.day;

    // 根据插件的API,这里假设插件提供了一个转换函数(实际API请参考文档)
    // 假设插件提供了一个名为`gregorianToHijri`的函数进行转换
    // 注意:这里假设的函数名和实际API可能不同,请参考插件的实际文档
    // HijriDate hijriDate = HijriyahIndonesia.gregorianToHijri(gregorianYear, gregorianMonth, gregorianDay);

    // 由于实际API可能不同,这里用一个假设的转换逻辑代替
    // 实际应用中应直接使用插件提供的转换函数
    // 以下是假设的转换逻辑,仅供演示,请忽略
    // int hijriYear = gregorianYear + 100; // 这是一个错误的假设,仅用于演示
    // int hijriMonth = gregorianMonth + 1; // 这也是一个错误的假设,仅用于演示
    // int hijriDay = gregorianDay + 1; // 这也是一个错误的假设,仅用于演示

    // 示例代码结束,请替换为实际转换逻辑

    // 为了示例的完整性,这里直接返回一个硬编码的伊斯兰历日期(实际应使用插件转换)
    // 请注意,这只是一个示例,实际应使用插件的API进行转换
    return HijriDate(1443, 6, 10); // 示例日期,请忽略
  }
}

// 假设的HijriDate类(实际应根据插件的API定义)
class HijriDate {
  final int year;
  final int month;
  final int day;

  HijriDate(this.year, this.month, this.day);
}

注意

  1. convertGregorianToHijri函数中的转换逻辑是假设的,因为hijriyah_indonesia插件的实际API可能与此不同。你需要参考插件的官方文档来获取正确的转换方法。

  2. 示例中的HijriDate类也是假设的,实际应根据插件提供的类进行定义。

  3. 请确保你已经按照插件的官方文档正确配置和使用了插件。

  4. 由于插件的API可能会变化,因此上述代码可能需要根据插件的最新文档进行调整。

回到顶部