Flutter伊斯兰祈祷时间计算插件adhan_dart的使用
Flutter伊斯兰祈祷时间计算插件adhan_dart的使用
Adhan Dart 是一个从优秀的 Adhan JavaScript 移植而来的库,移植到 Dart 后保留了计算逻辑,并且适应了 Dart 的 DateTime 类进行快速和便捷的时间计算。没有额外依赖(测试中使用了 timezone 包,在你的代码中你可以使用时区偏移量代替)。
安装
在 pubspec.yaml
文件中添加以下依赖:
dependencies:
adhan_dart: ^1.1.1
或者使用最新的开发版本:
dependencies:
adhan_dart:
git:
url: git://github.com/prayer-timetable/adhan_dart.git
导入
在 Dart 文件中导入:
import 'package:adhan_dart/adhan_dart.dart';
使用
要获取祈祷时间,需要初始化一个新的 PrayerTimes
对象,传入坐标、日期和计算参数。
初始化参数
坐标
创建一个 Coordinates
对象,包含纬度和经度。
Coordinates coordinates = Coordinates(35.78056, -78.6389);
日期
日期参数应为 Dart 的 DateTime
对象实例。
DateTime date = DateTime.now(); // 当前时间
DateTime date = DateTime(2015, 11, 1); // 特定日期
计算参数
其余所需信息包含在 CalculationParameters
对象中。建议使用 CalculationMethod
对象中的预填充对象来初始化此对象。
CalculationParameters params = CalculationMethod.muslimWorldLeague();
params.madhab = Madhab.hanafi;
params.adjustments.fajr = 2;
示例代码
下面是一个完整的示例演示如何使用 adhan_dart
库来计算祈祷时间并格式化输出。
import 'package:timezone/timezone.dart' as tz;
import 'package:timezone/data/latest.dart' as tz;
import 'package:adhan_dart/adhan_dart.dart';
void main() {
tz.initializeTimeZones();
final location = tz.getLocation('America/New_York');
// 定义坐标和日期
DateTime date = tz.TZDateTime.from(DateTime.now(), location);
Coordinates coordinates = Coordinates(35.78056, -78.6389);
// 设置计算参数
CalculationParameters params = CalculationMethod.MuslimWorldLeague();
params.madhab = Madhab.Hanafi;
PrayerTimes prayerTimes =
PrayerTimes(coordinates: coordinates, date: date, calculationParameters: params, precision: true);
// 获取祈祷时间
DateTime fajrTime = tz.TZDateTime.from(prayerTimes.fajr!, location);
DateTime sunriseTime = tz.TZDateTime.from(prayerTimes.sunrise!, location);
DateTime dhuhrTime = tz.TZDateTime.from(prayerTimes.dhuhr!, location);
DateTime asrTime = tz.TZDateTime.from(prayerTimes.asr!, location);
DateTime maghribTime = tz.TZDateTime.from(prayerTimes.maghrib!, location);
DateTime ishaTime = tz.TZDateTime.from(prayerTimes.isha!, location);
// 方便工具函数
String current = prayerTimes.currentPrayer(date: DateTime.now());
DateTime? currentPrayerTime = prayerTimes.timeForPrayer(current);
String next = prayerTimes.nextPrayer();
DateTime? nextPrayerTime = prayerTimes.timeForPrayer(next);
// Sunnah 时间
SunnahTimes sunnahTimes = SunnahTimes(prayerTimes);
DateTime middleOfTheNight = tz.TZDateTime.from(sunnahTimes.middleOfTheNight, location);
DateTime lastThirdOfTheNight = tz.TZDateTime.from(sunnahTimes.lastThirdOfTheNight, location);
// Qibla 方向
var qiblaDirection = Qibla.qibla(coordinates);
// 打印结果
print('***** 当前时间');
print('本地时间:\t$date');
print('\n***** 祈祷时间');
print('Fajr时间:\t$fajrTime');
print('日出时间:\t$sunriseTime');
print('Dhuhr时间:\t$dhuhrTime');
print('Asr时间:\t$asrTime');
print('Maghrib时间:\t$maghribTime');
print('Isha时间:\t$ishaTime');
print('\n***** 方便工具');
print('当前祈祷:\t$current\t$currentPrayerTime');
print('下一个祈祷:\t$next\t$nextPrayerTime');
print('\n***** Sunnah 时间');
print('夜晚中间时间:\t$middleOfTheNight');
print('夜晚最后三分之一时间:\t$lastThirdOfTheNight');
print('\n***** Qibla 方向');
print('Qibla方向:\t$qiblaDirection');
}
通过上述示例代码,您可以轻松地在 Flutter 应用中集成伊斯兰祈祷时间计算功能,并根据需要调整计算参数和显示方式。
更多关于Flutter伊斯兰祈祷时间计算插件adhan_dart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复