{"id":32296884,"url":"https://github.com/my-prayers/muslim-data-flutter","last_synced_at":"2026-03-07T03:33:01.984Z","repository":{"id":283343548,"uuid":"948132216","full_name":"my-prayers/muslim-data-flutter","owner":"my-prayers","description":"Best Muslim library that provides: Prayer Times, Offline Geocoder, Names of Allah, and Azkars","archived":false,"fork":false,"pushed_at":"2026-02-13T08:00:39.000Z","size":19280,"stargazers_count":17,"open_issues_count":7,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-17T05:39:12.547Z","etag":null,"topics":["azkar","location-geocoder","muslim","names-of-allah","prayer-times"],"latest_commit_sha":null,"homepage":"https://myprayers.io","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/my-prayers.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-13T19:59:12.000Z","updated_at":"2026-02-13T17:58:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"a3e44841-c011-4ca8-afd7-6b96a1da1e9d","html_url":"https://github.com/my-prayers/muslim-data-flutter","commit_stats":null,"previous_names":["kosratdev/muslim-data-flutter","my-prayers/muslim-data-flutter"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/my-prayers/muslim-data-flutter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/my-prayers%2Fmuslim-data-flutter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/my-prayers%2Fmuslim-data-flutter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/my-prayers%2Fmuslim-data-flutter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/my-prayers%2Fmuslim-data-flutter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/my-prayers","download_url":"https://codeload.github.com/my-prayers/muslim-data-flutter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/my-prayers%2Fmuslim-data-flutter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30206584,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T03:24:23.086Z","status":"ssl_error","status_checked_at":"2026-03-07T03:23:11.444Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azkar","location-geocoder","muslim","names-of-allah","prayer-times"],"created_at":"2025-10-23T04:35:38.937Z","updated_at":"2026-03-07T03:33:01.969Z","avatar_url":"https://github.com/my-prayers.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Muslim Data for Flutter\n\n![Pub.dev](https://img.shields.io/pub/v/muslim_data_flutter.svg) [![Flutter PR Checks](https://github.com/my-prayers/muslim-data-flutter/actions/workflows/pull_request.yaml/badge.svg)](https://github.com/my-prayers/muslim-data-flutter/actions/workflows/pull_request.yaml) [![codecov](https://codecov.io/github/my-prayers/muslim-data-flutter/graph/badge.svg?token=1H60BI85PT)](https://codecov.io/github/my-prayers/muslim-data-flutter)\n\nMuslim Data for Flutter is a cross-platform library that brings Islamic data to your Flutter applications. It unifies features from both Android and iOS versions into a single API so you can easily integrate functionalities such as:\n\n- Fixed or Calculated Prayer Times\n- Offline Geocoding and Reverse Geocoding\n- Location Search\n- Azkars (Hisnul Muslim) with translations\n- 99 Names of Allah with translations\n\n## Available on Native Platforms\n\nThis library is also available for native platform integration:\n\n- [Muslim Data for Android](https://github.com/my-prayers/muslim-data-android)\n- [Muslim Data for iOS](https://github.com/my-prayers/muslim-data-ios)\n\nThese native libraries share the same concepts and data structure, making it easy to develop similar applications across different platforms.\n\n## Features\n\n✅ **Prayer Times**: Most cities around the world find their prayer times by using some calculations which is based on location (longitude and latitude) but some other cities have fixed time table for their prayer times. This library contains most fixed and calculated prayer times. Now you can contribute it to improve it and also you can use it in Muslim communities or Muslim apps.\n✅ **Location Services**: Search for locations offline, geocode by city name, and reverse geocode using latitude and longitude.\n✅ **Azkars (Hisnul Muslim)**: Retrieve categorized azkars by (Category, Chapter, Item) in various languages.\n✅ **Names of Allah**: Access 99 Names of Allah along with translations in supported languages.\n\n## Usage\n\nInstall the package:\n\n```bash\nflutter pub add muslim_data_flutter\n```\n\nImport the package in your Dart file:\n\n```dart\nimport 'package:muslim_data_flutter/muslim_data_flutter.dart';\n```\n\n## Location Services\n\nThere are some location helper methods in the MuslimRepository that provides **offline Location Search**, **Geocoding**, and **Reverse Geocoding** and also each of one will return `Location` object or list of `Location`. `Location` object contains (`countryCode`, `countryName`, `cityName`, `latitude`, `longitude`, and `hasFixedPrayerTime`).\n\n|                      Search Location                      |                       Selected Location                       |\n| :----------------------------------------------------------: | :--------------------------------------------------------------: |\n| ![Search Location](assets/screenshots/search_location.png) | ![Selected Location](assets/screenshots/selected_location.png) |\n\n### Search for a location\n\nYou can search for any cities or places around the world and this is useful when a user doesn't have internet connection or user's location is turned off so that you can search here:\n\n```dart\nFuture\u003cvoid\u003e searchLocationExample() async {\n  final muslimRepo = MuslimRepository();\n  final locations = await muslimRepo.searchLocations(locationName: 'makka');\n\n  print(\"Locations: $locations\");\n}\n```\n\n### Geocode a location\n\nUse geocoder method to find a location by country code and city name.\n\n```dart\nFuture\u003cvoid\u003e geocodeLocationExample() async {\n  final muslimRepo = MuslimRepository();\n  final location = await muslimRepo.geocoder(\n    countryCode: \"GB\",\n    locationName: \"London\",\n  );\n\n  if (location != null) {\n    print(\"Location: $location\");\n  } else {\n    print(\"Location name cannot be geocoded\");\n  }\n}\n```\n\n### Reverse Geocode a location\n\nUse reverseGeocoder method to find a location by latitude and longitude.\n\n```dart\nFuture\u003cvoid\u003e reverseGeocode() async {\n  final muslimRepo = MuslimRepository();\n  final location = await muslimRepo.reverseGeocoder(\n    latitude: 51.5074,\n    longitude: -0.1278,\n  );\n\n  if (location != null) {\n    print(\"Location: $location\");\n  } else {\n    print(\"Location could not be reverse geocoded\");\n  }\n}\n```\n\n## Prayer Times\n\n|                     Prayer Times                     |\n| :----------------------------------------------------: |\n| ![Prayer Times](assets/screenshots/prayer_times.png) |\n\nYou can easily get prayer times for a location just by passing (`Location`, `PrayerAttribute`, and `Date`) objects to `getPrayerTimes` method.\n\n```dart\nFuture\u003cvoid\u003e getPrayerTimesExample() async {\n  final muslimRepo = MuslimRepository();\n\n  // Create a PrayerAttribute object.\n  final attribute = PrayerAttribute(\n    calculationMethod: CalculationMethod.makkah, // if it's custom, you should pass CustomMethod parameter too.\n    asrMethod: AsrMethod.shafii,\n    higherLatitudeMethod: HigherLatitudeMethod.angleBased,\n    offset: [0, 0, 0, 0, 0, 0],\n  );\n\n  // Assume that 'location' has been retrieved using one of the location methods above.\n\n  final prayerTime = await muslimRepo.getPrayerTimes(\n    location: location,  \n    date: DateTime.now(),\n    attribute: attribute,\n    // You can set useFixedPrayer: false if you want calculated prayer times \n    // for places that have fixed prayer times.\n  );\n\n  if (prayerTime != null) {\n    print(\"Prayer Times: $prayerTime\");\n  }\n}\n```\n\n## Azkars (Hisnul Muslim)\n\nGet all azkars from (Hisnul Muslim book) that is categorized by (`AzkarCategory`, `AzkarChapter`, and `AzkarItem`) and also the azkars are available for these languages (`en`, `ar`, `ckb`, `ckb_BADINI`, `fa`, and `ru`)\n\n|                      Azkar Categories                      |                      Azkar Chapters                      |                    Azkar Items                    |\n| :----------------------------------------------------------: | :--------------------------------------------------------: | :-------------------------------------------------: |\n| ![Azkar Categories](assets/screenshots/azkar_category.png) | ![Azkar Chapters](assets/screenshots/azkar_chapters.png) | ![Azkar Items](assets/screenshots/azkar_item.png) |\n\n### Azkar Category\n\nGet all azkar categories with its translation for the given language.\n\n```dart\nvoid getAzkarCategoriesExample() async {\n  final muslimRepo = MuslimRepository();\n  final categories = await muslimRepo.getAzkarCategories(language: Language.en);\n\n  print(\"Azkar Categories: $categories\");\n}\n```\n\n### Azkar Chapters\n\nGet azkar chapters with its translation for the given language.\n\n```dart\nvoid getAzkarChaptersExample() async {\n  final muslimRepo = MuslimRepository();\n  final categories = await muslimRepo.getAzkarChapters(language: Language.en);\n\n  print(\"Azkar Chapters: $categories\");\n}\n```\n\nGet azkar chapters for a specific category with its translation for the given language.\n\n```dart\nvoid getAzkarChaptersExample() async {\n  final muslimRepo = MuslimRepository();\n  final categories = await muslimRepo.getAzkarChapters(\n    language: Language.en,\n    categoryId: 1,\n  );\n\n  print(\"Azkar Chapters: $categories\");\n}\n```\n\nGet azkar chapters by chapter ids. This method is particularly useful for implementing a favorites feature on azkar. By just saving the azkar ids, you can later retrieve the full details when needed using this method, simplifying management and synchronization of your favorite azkar entries.\n\n```dart\nvoid getAzkarChaptersExample() async {\n  final muslimRepo = MuslimRepository();\n  final categories = await muslimRepo.getAzkarChaptersByIds(\n    language: Language.en,\n    chapterIds: [12, 15],\n  );\n\n  print(\"Azkar Chapters: $categories\");\n}\n```\n\n### Azkar Items\n\nGet azkar items for a specific chapter and it is localized for the given language.\n\n```dart\nvoid getAzkarItemsExample() async {\n  final muslimRepo = MuslimRepository();\n  final categories = await muslimRepo.getAzkarItems(\n    language: Language.en,\n    chapterId: 1,\n  );\n\n  print(\"Azkar Items: $categories\");\n}\n```\n\n## Names of Allah\n\n|                99 Names of Allah                |\n| :-----------------------------------------------: |\n| ![Names of Allah](assets/screenshots/names.png) |\n\nGet 99 Names of Allah with its translation and it is available for these languages (`en`, `ar`, `ckb`, `ckb_BADINI`, `fa`, and `ru`)\n\n```dart\nFuture\u003cvoid\u003e getNamesOfAllah() async {\n  final muslimRepo = MuslimRepository();\n  final names = await muslimRepo.getNames(language: Language.en);\n  print(\"Names of Allah: $names\");\n}\n```\n\n## Author\n\nKosrat D. Ahmed\nEmail: \u003ckosrat.d.ahmad@gmail.com\u003e\n\n## License\n\n**Muslim Data for Flutter** is available under the MIT license. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmy-prayers%2Fmuslim-data-flutter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmy-prayers%2Fmuslim-data-flutter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmy-prayers%2Fmuslim-data-flutter/lists"}