prayer_timetable 2.2.4 copy "prayer_timetable: ^2.2.4" to clipboard
prayer_timetable: ^2.2.4 copied to clipboard

Comprehensive Dart library for Islamic prayer time calculations with multiple methods, jamaah time management, timezone support, and Hijri calendar integration.

Changelog #

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

2.2.4 - 2025-10-27 #

Fixed #

  • DST Prayer Time Adjustment: Fixed adjDst calculation in prayers.dart to properly add one hour to all prayer times during daylight saving time periods
    • Replaced hardcoded adjDst = 0 with dynamic DST detection using timestamp.timeZone.isDst
    • Prayer times from timetable maps now correctly adjust for DST transitions
    • Ensures accurate prayer time display during DST periods across all supported timezones

Improved #

  • Code Quality: Cleaned up prayers.dart file by removing unnecessary comments, debug prints, and commented-out test code
  • Documentation: Enhanced inline documentation throughout prayers.dart with detailed explanations of:
    • DST adjustment logic and timezone handling
    • Prayer time calculation methods (map, list, astronomical)
    • Jamaah time calculation with different methods ('afterthis', 'fixed')
    • Prayer joining functionality for combined prayers
    • Current/next prayer determination algorithms

Technical Details #

  • Removed unused timestampTZsafe variable and associated commented code
  • Added comprehensive inline comments explaining complex prayer time logic
  • Improved code readability while maintaining all existing functionality
  • All prayer time calculations now properly respect DST status of target date

2.2.3 - 2025-10-26 #

Fixed #

  • Critical Timezone Issues: Resolved fundamental timezone conversion problems affecting all European timezones
    • Fixed nowTZ function that was incorrectly treating local DateTime as UTC time
    • Fixed tz.TZDateTime.from() usage in multiple functions that caused unwanted timezone conversions
    • Corrected timezone handling in prayers.dart, monthGen.dart, tzTime.dart, and test files
    • Fixed prayer time calculations showing incorrect times (e.g., 18:59:55 instead of 17:59:55)
  • DST Transition Accuracy: Ensured proper Daylight Saving Time transitions for all supported timezones
    • Dublin: IST (+1) → GMT (+0) transition working correctly
    • Sarajevo: CEST (+2) → CET (+1) transition working correctly
    • London: BST (+1) → GMT (+0) transition working correctly
  • DST Prayer Time Calculation: Fixed critical issue where prayer times were calculated one hour early during DST periods
    • Fixed DST adjustment logic to use target date's DST status instead of current timestamp
    • Resolved issue where Friday evening prayers for Saturday were showing incorrect times (e.g., 05:24 instead of 06:24)
    • Ensured prayer times are correctly adjusted for DST throughout transition periods
  • Test Suite Consistency: Updated all test files to use correct timezone-aware DateTime creation
  • Cross-timezone Compatibility: Verified accurate prayer time calculations across multiple European timezones

Technical Details #

  • Replaced tz.TZDateTime.from(DateTime(...), location) with tz.TZDateTime(location, year, month, day, hour, minute, second)
  • Fixed timezone conversion logic in 6 different files affecting core prayer time calculations
  • Enhanced timezone handling for both map-based and calculation-based prayer time methods

2.2.2 - 2025-10-26 #

Fixed #

  • Documentation Quality: Fixed unresolved documentation references that could impact pub.flutter-io.cn scoring
    • Fixed [hours, minutes] reference in defaultJamaahOffsets documentation
    • Fixed [year, month, day] references in Utils class documentation
    • Improved documentation clarity for Hijri calendar functions

2.2.1 - 2025-10-26 #

Added #

  • Comprehensive Monthly Table Documentation: Detailed examples and usage for both Gregorian and Hijri monthly prayer table generation
    • Clear separation between PrayerTimetable.monthTable() and PrayerTimetable.monthHijriTable() methods
    • Integration examples showing how to use Utils Hijri conversion methods with monthly tables
    • Dual calendar display examples (showing both Hijri and Gregorian dates)
    • Performance optimization documentation for pre-calculated timetables

Fixed #

  • Minor code quality improvements in test files
  • Removed unused variables and unnecessary string interpolation braces

2.2.0 - 2025-10-26 #

Added #

  • Hijri Calendar Conversion Functions: Comprehensive static methods in Utils class for Hijri calendar operations
    • Utils.hijriToGregorian(year, month, day) - Convert specific Hijri dates to Gregorian
    • Utils.gregorianToHijri(DateTime) - Convert Gregorian dates to Hijri
    • Utils.getHijriMonthStart(year, month) - Get first day of Hijri month in Gregorian
    • Utils.getHijriMonthEnd(year, month) - Get last day of Hijri month in Gregorian
    • Utils.getHijriMonthLength(year, month) - Get number of days in Hijri month
    • Utils.getHijriYearStart(year) - Get first day of Hijri year (1st Muharram)
    • Utils.getHijriYearEnd(year) - Get last day of Hijri year (last day of Dhul Hijjah)
    • Utils.formatHijriDate(year, month, day) - Format Hijri dates as "YYYY-MM-DD" strings
    • Utils.getHijriMonthNameEnglish(month) - Get English month names (e.g., "Ramadan")
    • Utils.getHijriMonthNameArabic(month) - Get Arabic month names (e.g., "رمضان")
  • Enhanced documentation with comprehensive Hijri conversion examples
  • Full API documentation for all new Hijri calendar functions

Changed #

  • Moved Hijri conversion functions from helpers to Utils class as static methods for better organization
  • Updated README with detailed Hijri calendar conversion section and examples
  • Improved code organization by centralizing Islamic calendar utilities in Utils class

Fixed #

  • DST Calculation Bug: Corrected Daylight Saving Time logic for Dublin timezone that was incorrectly adding hours instead of subtracting during DST end transition
  • Prayer time adjustments now properly handle DST transitions, ensuring accurate times during timezone changes
  • Verified DST behavior for October 26, 2025 transition and other DST boundary dates

Technical Details #

  • All Hijri functions are now accessible via Utils.functionName() syntax
  • Functions support both individual date conversions and bulk month/year operations
  • Comprehensive error handling and input validation for all date parameters
  • Full compatibility with existing hijri package for accurate calendar calculations

2.1.0 - 2024-12-19 #

Added #

  • Comprehensive inline documentation for all classes, methods, and properties
  • Complete API documentation with parameter explanations and usage examples
  • Enhanced README with detailed usage examples and feature explanations
  • Support for string-based enum parameters in TimetableCalc (highLatitudeRule, madhab)
  • Helper methods for converting string parameters to proper enum types
  • Detailed prayer ID documentation and explanation
  • Islamic context documentation for developers unfamiliar with prayer times

Changed #

  • Improved type safety throughout the codebase
  • Enhanced error handling and parameter validation
  • Updated README to reflect current API and features
  • Modernized package structure and documentation standards

Fixed #

  • Type conversion issues in TimetableCalc constructor
  • Null assertion warnings in prayer time calculations
  • Enum parameter handling for configuration flexibility
  • All linting issues and type safety warnings

Documentation #

  • Added comprehensive class-level documentation
  • Documented all public APIs with examples
  • Added parameter descriptions for all methods
  • Included Islamic prayer time concepts explanation
  • Added timezone and DST handling documentation

2.0.0 - 2024-03-15 #

Added #

  • Multiple calculation methods support (astronomical, map-based, list-based)
  • Jamaah (congregation) time management with customizable offsets
  • Full timezone support with automatic DST handling
  • Prayer joining functionality (Dhuhr-Asr, Maghrib-Isha)
  • Monthly prayer time generation for Gregorian and Hijri calendars
  • Prayer status analysis (current, next, pending jamaah)
  • Qibla direction calculation using coordinates
  • Hijri calendar integration
  • Sunnah time calculations (Islamic midnight, last third of night)

Changed #

  • Complete rewrite of the prayer calculation engine
  • Improved accuracy using adhan_dart library
  • Enhanced timezone handling with proper DST support
  • Modernized API design with multiple constructor patterns

Breaking Changes #

  • New API structure with PrayerTimetable.calc(), .map(), .list() constructors
  • Prayer objects now use arrays instead of named properties
  • Utils class replaces separate Calc, Sunnah, and Qibla classes
  • Updated parameter names and types for consistency

1.5.0 - 2023-08-20 #

Added #

  • High latitude calculation rules support
  • Madhab selection (Shafi, Hanafi) for Asr calculation
  • Prayer time adjustments and method adjustments
  • Precision control for seconds display
  • Enhanced DST calculation accuracy

Changed #

  • Improved astronomical calculation precision
  • Better handling of extreme latitude locations
  • Enhanced date and time manipulation utilities

Fixed #

  • DST calculation issues in certain timezones
  • Precision rounding in prayer time calculations
  • Edge cases in high latitude regions

1.4.0 - 2023-05-10 #

Added #

  • Custom calculation parameters support
  • Multiple calculation methods (Muslim World League, ISNA, etc.)
  • Altitude-based prayer time adjustments
  • Enhanced debugging and logging capabilities

Changed #

  • Refactored calculation engine for better maintainability
  • Improved error handling and validation
  • Enhanced documentation and code comments

Fixed #

  • Memory leaks in continuous calculations
  • Performance issues with repeated calculations
  • Timezone offset calculation accuracy

1.3.0 - 2023-02-15 #

Added #

  • Hijri calendar support and conversions
  • Islamic date utilities and formatting
  • Monthly prayer time tables generation
  • Prayer time difference calculations

Changed #

  • Enhanced DateTime handling and manipulation
  • Improved calculation performance
  • Better memory management for large datasets

Fixed #

  • Leap year calculations in Hijri calendar
  • Month boundary issues in prayer calculations
  • Timezone conversion edge cases

1.2.0 - 2022-11-30 #

Added #

  • Qibla direction calculation from coordinates
  • Prayer countdown and count-up timers
  • Prayer completion percentage calculation
  • Current prayer detection logic

Changed #

  • Improved prayer time analysis algorithms
  • Enhanced user interface for prayer status
  • Better integration with timezone libraries

Fixed #

  • Prayer transition timing accuracy
  • Current prayer detection edge cases
  • Timer synchronization issues

1.1.0 - 2022-09-15 #

Added #

  • Sunnah time calculations (midnight, last third)
  • Prayer period end time calculations
  • Enhanced prayer status tracking
  • Timezone-aware calculations

Changed #

  • Refactored core calculation logic
  • Improved code organization and structure
  • Enhanced testing coverage

Fixed #

  • Prayer end time calculation accuracy
  • Sunnah time calculation in different seasons
  • Edge cases in prayer period detection

1.0.0 - 2022-06-01 #

Added #

  • Initial release of prayer_timetable library
  • Basic prayer time calculations using astronomical formulas
  • Support for five daily prayers plus sunrise
  • Timezone and DST support
  • Coordinate-based calculations
  • Customizable calculation angles (Fajr, Isha)
  • Prayer time formatting and display utilities

Features #

  • Accurate astronomical calculations based on Jean Meeus algorithms
  • Support for different geographic locations
  • Customizable prayer calculation parameters
  • DateTime integration for easy time manipulation
  • Cross-platform compatibility (Dart/Flutter)

Version History Summary #

  • v2.1.0: Documentation overhaul and type safety improvements
  • v2.0.0: Major rewrite with multiple calculation methods and jamaah support
  • v1.5.0: High latitude rules and madhab selection
  • v1.4.0: Custom calculation parameters and multiple methods
  • v1.3.0: Hijri calendar integration and monthly tables
  • v1.2.0: Qibla calculation and prayer analysis
  • v1.1.0: Sunnah times and enhanced status tracking
  • v1.0.0: Initial release with core prayer calculations

Migration Guide #

From v1.x to v2.0.0 #

The v2.0.0 release introduced breaking changes to improve the API design:

// Old API (v1.x)
PrayerTimetable location = PrayerTimetable(timezone, lat, lng, angle);
print(location.prayers.current.dawn);

// New API (v2.0.0+)
final timetable = PrayerTimetable.calc(
  timetableCalc: TimetableCalc(
    date: DateTime.now(),
    timezone: 'America/New_York',
    lat: lat,
    lng: lng,
    precision: true,
    fajrAngle: angle,
  ),
  jamaahOn: false,
  timezone: 'America/New_York',
);
print(timetable.current[0].prayerTime); // Fajr

Key Changes: #

  • Use constructor methods: .calc(), .map(), .list()
  • Prayer times are now arrays: current[0] instead of current.dawn
  • Utils class combines Calc, Sunnah, and Qibla functionality
  • Enhanced timezone handling with string identifiers
2
likes
150
points
5
downloads

Publisher

unverified uploader

Weekly Downloads

Comprehensive Dart library for Islamic prayer time calculations with multiple methods, jamaah time management, timezone support, and Hijri calendar integration.

Repository (GitHub)
View/report issues

Topics

#islam #prayer #muslim #adhan #hijri

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

adhan_dart, hijri, timezone

More

Packages that depend on prayer_timetable