Flutter伊斯兰祈祷时间计算插件adhan_dart的使用

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

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 回复

更多关于Flutter伊斯兰祈祷时间计算插件adhan_dart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用adhan_dart插件来计算伊斯兰祈祷时间的示例代码。adhan_dart是一个用于计算伊斯兰祈祷时间的Dart库,它基于Adhan JavaScript库。

首先,确保你已经在pubspec.yaml文件中添加了adhan_dart依赖:

dependencies:
  flutter:
    sdk: flutter
  adhan_dart: ^x.y.z  # 请将x.y.z替换为最新版本号

然后运行flutter pub get来安装依赖。

接下来是一个完整的Flutter应用示例,展示如何使用adhan_dart来计算并显示伊斯兰祈祷时间:

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

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

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

class PrayerTimesPage extends StatefulWidget {
  @override
  _PrayerTimesPageState createState() => _PrayerTimesPageState();
}

class _PrayerTimesPageState extends State<PrayerTimesPage> {
  late PrayerTimes _prayerTimes;

  @override
  void initState() {
    super.initState();
    calculatePrayerTimes();
  }

  void calculatePrayerTimes() {
    // 设置计算参数
    final coordinates = Coordinates(latitude: 37.7749, longitude: -122.4194); // 旧金山坐标
    final date = DateTime.now();
    final calculationMethod = CalculationMethod.muslim(); // 选择计算方法
    final prayerTimesParameters = PrayerTimesParameters(
      coordinates: coordinates,
      date: date,
      calculationMethod: calculationMethod,
      madhab: Madhab.hanafi, // 选择教法学派
      asrJuristicMethod: AsrJuristicMethod.standard, // Asr计算方法
      fajrAngle: 15, // Fajr角度
      ishaAngle: 15, // Isha角度
    );

    // 计算祈祷时间
    _prayerTimes = PrayerTimes.calculate(prayerTimesParameters);

    // 打印结果到控制台(仅用于调试)
    print('Fajr: ${_prayerTimes.fajr}');
    print('Sunrise: ${_prayerTimes.sunrise}');
    print('Dhuhr: ${_prayerTimes.dhuhr}');
    print('Asr: ${_prayerTimes.asr}');
    print('Maghrib: ${_prayerTimes.maghrib}');
    print('Isha: ${_prayerTimes.isha}');

    // 更新UI(如果需要)
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('伊斯兰祈祷时间'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text('Fajr: $_prayerTimes.fajr'),
            Text('Sunrise: $_prayerTimes.sunrise'),
            Text('Dhuhr: $_prayerTimes.dhuhr'),
            Text('Asr: $_prayerTimes.asr'),
            Text('Maghrib: $_prayerTimes.maghrib'),
            Text('Isha: $_prayerTimes.isha'),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们:

  1. 创建了一个Flutter应用,并在pubspec.yaml中添加了adhan_dart依赖。
  2. 创建了一个包含祈祷时间计算逻辑的PrayerTimesPage组件。
  3. 使用adhan_dart库中的CoordinatesDateTimeCalculationMethodPrayerTimesParametersPrayerTimes类来计算祈祷时间。
  4. 在UI中显示了计算得到的祈祷时间。

你可以根据需要调整坐标、日期、计算方法和角度等参数,以适应你的具体需求。

回到顶部