Flutter伊朗历日历插件jalali_calendar的使用

Flutter伊朗历日历插件jalali_calendar的使用

JalaShamsi 日历插件(DatePicker 和 TimePicker)

简介

本插件提供用于伊朗历(Jalali/Shamsi)的日历、日期选择器和日期转换功能。适用于Android和iOS平台。

功能展示

屏幕截图

使用方法

pubspec.yaml 中添加依赖

dependencies:
  jalali_calendar: <最新版本>

导入库

在需要使用的 Dart 文件中导入以下库:

import 'package:jalali_calendar/jalali_calendar.dart';
import 'package:persian_date/persian_date.dart';

显示日历并获取日期

可以通过调用 jalaliCalendarPicker() 方法来显示日历,并获取用户选择的日期。如果希望返回的日期为公历格式,可以在调用该方法时设置 convertToGregorian 参数为 true

返回伊朗历日期

Future _selectDate() async {
  String picked = await jalaliCalendarPicker(context: context);
  if (picked != null) setState(() => _value = picked.toString());
  print(_value);
}

返回公历日期

Future _selectDate() async {
  String picked = await jalaliCalendarPicker(context: context, convertToGregorian: true);
  if (picked != null) setState(() => _value = picked.toString());
  print(_value);
}

显示时间选择器

可以设置一些参数来显示时间选择器。例如:

  • showTimePicker: 设置为 true 来显示时间选择器。
  • hore24Format: 设置为 true 来以24小时制显示时间。
  • initialTime: 通过 TimeOfDay 设置初始时间。

使用日期选择器

要显示日期选择器,需要指定一些参数,如最小年份 (minYear) 和最大年份 (maxYear)。还需要指定确认按钮 (confirm) 和取消按钮 (cancel) 的文本。

完整的日期选择器示例

DatePicker.showDatePicker(
  context,
  minYear: 1300,
  maxYear: 1450,
  confirm: Text(
    '确定',
    style: TextStyle(color: Colors.red),
  ),
  cancel: Text(
    '取消',
    style: TextStyle(color: Colors.cyan),
  ),
  dateFormat: _format,
  onChanged: (year, month, day) {
    if (!showTitleActions) {
      _changeDatetime(year, month, day);
    }
  },
  onConfirm: (year, month, day) {
    _changeDatetime(year, month, day);
    _valuePiker = "完整日期 : $_datetime  \n 年 : $year \n 月 : $month \n 日 : $day";
  }
);

void _changeDatetime(int year, int month, int day) {
  setState(() {
    _datetime = '$year-$month-$day';
  });
}

使用日期转换器

首先需要导入 persian_date 库:

import 'package:persian_date/persian_date.dart';

完整的日期转换器示例

// 创建一个日期对象
PersianDate pDate = PersianDate(gregorian: "1989-01-29");
print("当前日期 ${pDate.getDate}");

// 获取当前日期
PersianDate persianDate = PersianDate();
print("当前日期 ${persianDate.now}");
print(persianDate.hour);
print("年 ${persianDate.year}");
print("是否节假日 ${persianDate.isHoliday}");
print("星期几 ${persianDate.weekdayname}");
print(persianDate.monthname); // 月份名称
print(persianDate.month); // 月份
print(persianDate.day); // 日期
print(persianDate.hour); // 小时
print(persianDate.minute); // 分钟
print(persianDate.second); // 秒
print(persianDate.millisecond); // 毫秒
print(persianDate.microsecond); // 微秒

print("将公历转为伊朗历 ${persianDate.gregorianToJalali("2019-02-20T00:19:54.000Z","yyyy-m-d hh:nn")}");
print("将伊朗历转为公历 ${persianDate.jalaliToGregorian("1368-05-30 19:54", "yyyy-m-d hh:nn")}");

支持的日期格式

支持的日期格式包括:

"2012-02-27 13:27:00"
"2012-02-27 13:27:00.123456z"
"2012-02-27 13:27:00,123456z"
"20120227 13:27:00"
"20120227T132700"
"20120227"
"+20120227"
"2012-02-27T14Z"
"2012-02-27T14+00:00"
"-123450101 00:00:00 Z": 在公元前12345年
"2002-02-27T14:00:00-0500": 相当于 "2002-02-27T19:00:00Z"

更多关于Flutter伊朗历日历插件jalali_calendar的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter伊朗历日历插件jalali_calendar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


jalali_calendar 是一个用于在 Flutter 应用中显示伊朗历(Jalali 日历)的插件。伊朗历(也称为波斯历或 Jalali 历)是一种太阳历,主要用于伊朗和阿富汗等地区。jalali_calendar 插件可以帮助你在 Flutter 应用中轻松地显示和操作伊朗历日期。

以下是如何在 Flutter 项目中使用 jalali_calendar 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  jalali_calendar: ^1.0.0  # 请使用最新版本

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

2. 导入包

在你的 Dart 文件中导入 jalali_calendar 包:

import 'package:jalali_calendar/jalali_calendar.dart';

3. 使用 Jalali 日历

jalali_calendar 提供了 JalaliCalendar 小部件,你可以直接在 Flutter 应用中使用它来显示伊朗历日历。

基本用法

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Jalali Calendar Example'),
        ),
        body: Center(
          child: JalaliCalendar(),
        ),
      ),
    );
  }
}

自定义日历

你可以通过传递参数来自定义 JalaliCalendar 的外观和行为。例如,你可以设置初始日期、选择日期的回调函数等。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Custom Jalali Calendar Example'),
        ),
        body: Center(
          child: JalaliCalendar(
            initialDate: Jalali.now(),
            onDateSelected: (date) {
              print('Selected date: $date');
            },
          ),
        ),
      ),
    );
  }
}

4. 处理日期

jalali_calendar 提供了 Jalali 类来处理伊朗历日期。你可以使用 Jalali 类来创建、格式化和操作日期。

创建日期

Jalali jalaliDate = Jalali(year: 1401, month: 1, day: 1);

格式化日期

String formattedDate = jalaliDate.format('yyyy/MM/dd');
print(formattedDate);  // 输出: 1401/01/01

转换为公历

DateTime gregorianDate = jalaliDate.toGregorian();
print(gregorianDate);  // 输出: 2022-03-21 00:00:00.000

从公历转换为伊朗历

Jalali jalaliDate = Jalali.fromGregorian(DateTime(2022, 3, 21));
print(jalaliDate);  // 输出: Jalali(1401, 1, 1)

5. 其他功能

jalali_calendar 还提供了其他功能,例如日期选择器、月份选择器等。你可以根据项目需求进一步探索和使用这些功能。

6. 运行应用

完成上述步骤后,你可以运行你的 Flutter 应用,并查看伊朗历日历的效果。

flutter run
回到顶部