pray_calc_dart
Islamic prayer times for Dart and Flutter. Pure Dart port of pray-calc, implementing the MCW seasonal model and dynamic twilight angles. Uses nrel_spa for the NREL Solar Position Algorithm.
Installation
dependencies:
pray_calc_dart: ^1.0.0
Quick Start
import 'package:pray_calc_dart/pray_calc_dart.dart';
void main() {
final date = DateTime(2024, 3, 15);
final times = getTimes(date, 40.7128, -74.0060, -5.0);
print('Fajr: ${formatTime(times.fajr)}');
print('Sunrise: ${formatTime(times.sunrise)}');
print('Dhuhr: ${formatTime(times.dhuhr)}');
print('Asr: ${formatTime(times.asr)}');
print('Maghrib: ${formatTime(times.maghrib)}');
print('Isha: ${formatTime(times.isha)}');
print('Qiyam: ${formatTime(times.qiyam)}');
}
API
Full API documentation, guides, and examples are in the wiki.
Core functions
| Function | Description |
|---|---|
getTimes(date, lat, lng, tz, {...}) |
All prayer times for a date and location |
getAngles(date, lat, lng, {...}) |
Dynamic Fajr/Isha depression angles |
getSpa(date, lat, lng, tz, {...}) |
NREL Solar Position Algorithm (re-export) |
formatTime(hours) |
Fractional hours to HH:MM:SS string |
Dynamic Angle Algorithm
Fixed-angle methods (ISNA 15 degrees, MWL 18 degrees) produce inaccurate Fajr times at latitudes above 45 degrees N/S. The dynamic method adapts the depression angle based on season, latitude, Earth-Sun distance, and local atmospheric conditions.
Result: approximately 18 degrees at the equator, approximately 12-14 degrees at 50-55 degrees N in summer. Matches observational data from the Moonsighting Committee Worldwide.
Compatibility
Dart SDK 3.7.0+. Works in Flutter (iOS, Android, Web, Desktop), Dart CLI, and server-side Dart. Single dependency: nrel_spa.
Related
- pray-calc - TypeScript/JavaScript version (npm)
- nrel-spa - Standalone NREL SPA for JavaScript
- qibla - Qibla direction calculator
Acknowledgments
The Solar Position Algorithm is based on:
Reda, I. and Andreas, A. (2004). Solar Position Algorithm for Solar Radiation Applications. NREL/TP-560-34302. DOI: 10.2172/15003974
The MCW seasonal model is based on the work of the Moonsighting Committee Worldwide (Khalid Shaukat).
License
MIT. The NREL SPA implementation carries its own terms (see LICENSE for details).
Libraries
- pray_calc_dart
- pray_calc_dart — Pure Dart Islamic prayer time calculation.