diff --git a/lib/class/PrayerTimes.dart b/lib/class/PrayerTimes.dart new file mode 100644 index 0000000..b7b07e6 --- /dev/null +++ b/lib/class/PrayerTimes.dart @@ -0,0 +1,23 @@ +import 'package:prayer_time/prayer_time.dart'; +import 'package:prayer_time_app/utils.dart'; + +class PrayerTimes { + final int method; + final double latitude; + final double longitude; + + PrayerTimes({required this.method, required this.latitude, required this.longitude}); + + List getTimes(DateTime date) { + PrayTime prayerTime = PrayTime(method: method); + var times = prayerTime.getPrayerTimes({ + "year": date.year, + "mon": date.month, + "mday": date.day, + }, latitude, longitude, parseTimeZoneOffset(date.timeZoneOffset)); + + // remove 6th index from the list, because it is not required. + times.removeAt(5); + return times; + } +} diff --git a/lib/pages/Home.dart b/lib/pages/Home.dart index 5754205..4006e16 100644 --- a/lib/pages/Home.dart +++ b/lib/pages/Home.dart @@ -56,6 +56,8 @@ class _HomeState extends State with SingleTickerProviderStateMixin { "mday": now.day, }, widget.latitude!, widget.longitude!, parseTimeZoneOffset(now.timeZoneOffset)); + // remove 6th index from the list, because it is not required. + times.removeAt(5); return Padding( padding: const EdgeInsets.all(8.0), child: ListView( @@ -88,93 +90,20 @@ class _HomeState extends State with SingleTickerProviderStateMixin { )), ), Divider(), - ListTile( - title: Text( - "Fajr/Sehar Time", - style: TextStyle( - fontSize: 18, - ), - ), - subtitle: Text(times[0], - style: TextStyle( - fontSize: 26, - )), - ), - SizedBox( - height: 12, - ), - ListTile( - title: Text( - "Sunrise", - style: TextStyle( - fontSize: 18, - ), - ), - subtitle: Text(times[1], - style: TextStyle( - fontSize: 26, - )), - ), - SizedBox( - height: 12, - ), - ListTile( - title: Text( - "Dhuhr", - style: TextStyle( - fontSize: 18, - ), - ), - subtitle: Text(times[2], - style: TextStyle( - fontSize: 26, - )), - ), - SizedBox( - height: 12, - ), - ListTile( - title: Text( - "Asr", - style: TextStyle( - fontSize: 18, - ), - ), - subtitle: Text(times[3], - style: TextStyle( - fontSize: 26, - )), - ), - SizedBox( - height: 12, - ), - ListTile( - title: Text( - "Maghrib/Iftar Time", - style: TextStyle( - fontSize: 18, - ), - ), - subtitle: Text(times[5], + ...List.generate(times.length, (index) { + return ListTile( + title: Text( + getPrayerName(index), style: TextStyle( - fontSize: 26, - )), - ), - SizedBox( - height: 12, - ), - ListTile( - title: Text( - "Isha", - style: TextStyle( - fontSize: 18, + fontSize: 18, + ), ), - ), - subtitle: Text(times[6], - style: TextStyle( - fontSize: 26, - )), - ), + subtitle: Text(times[index], + style: TextStyle( + fontSize: 26, + )), + ); + }), Divider(), TextButton( child: Text("Extend View"), diff --git a/lib/pages/Monthly.dart b/lib/pages/Monthly.dart index 081577a..a54e0a4 100644 --- a/lib/pages/Monthly.dart +++ b/lib/pages/Monthly.dart @@ -1,4 +1,5 @@ import "package:flutter/material.dart"; +import 'package:prayer_time_app/class/PrayerTimes.dart'; import 'package:prayer_time_app/components/custom_app_bar.dart'; import 'package:prayer_time/prayer_time.dart'; import 'package:hijri/hijri_calendar.dart'; @@ -6,13 +7,13 @@ import 'package:intl/intl.dart'; import '../utils.dart'; - class Monthly extends StatefulWidget { final double? latitude; final double? longitude; final int? method; - const Monthly({Key? key, this.latitude, this.longitude, this.method}) : super(key: key); + const Monthly({Key? key, this.latitude, this.longitude, this.method}) + : super(key: key); @override _MonthlyState createState() => _MonthlyState(); @@ -35,7 +36,10 @@ class _MonthlyState extends State with SingleTickerProviderStateMixin { Widget buildCard(BuildContext context) { DateTime now = DateTime.now(); - PrayTime prayerTime = PrayTime(method: widget.method!); + PrayerTimes prayerTime = PrayerTimes( + method: widget.method!, + latitude: widget.latitude!, + longitude: widget.longitude!); List cards = []; for (int i = 0; i < 30; i++) { @@ -44,11 +48,7 @@ class _MonthlyState extends State with SingleTickerProviderStateMixin { DateFormat formatter = DateFormat('MMMM dd, yyyy'); String formattedDate = formatter.format(date); - var times = prayerTime.getPrayerTimes({ - "year": date.year, - "mon": date.month, - "mday": date.day, - }, widget.latitude!, widget.longitude!, parseTimeZoneOffset(now.timeZoneOffset)); + var times = prayerTime.getTimes(now); cards.add( Card( @@ -58,33 +58,15 @@ class _MonthlyState extends State with SingleTickerProviderStateMixin { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text('${hDate.toFormat("MMMM dd, yyyy")} / $formattedDate', style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold)), + Text('${hDate.toFormat("MMMM dd, yyyy")} / $formattedDate', + style: + TextStyle(fontSize: 16, fontWeight: FontWeight.bold)), SizedBox(height: 8), ...List.generate(times.length, (index) { - var prayer; - switch (index) { - case 0: - prayer = "Fajr"; - break; - case 1: - prayer = "Sunrise"; - break; - case 2: - prayer = "Dhuhr"; - break; - case 3: - prayer = "Asr"; - break; - case 4: - prayer = "Maghrib"; - break; - case 5: - prayer = "Isha"; - break; - } return Padding( padding: const EdgeInsets.only(top: 4.0), - child: Text('$prayer : ${times[index]}', style: TextStyle(fontSize: 14)), + child: Text('${getPrayerName(index)} : ${times[index]}', + style: TextStyle(fontSize: 14)), ); }), ], diff --git a/lib/utils.dart b/lib/utils.dart index a72cb88..a2b28dc 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -1,7 +1,6 @@ import 'package:url_launcher/url_launcher.dart'; -double parseTimeZoneOffset(var offset) -{ +double parseTimeZoneOffset(var offset) { var timezone = offset.toString(); var l = timezone.split(':'); var prepare = l[0] + '.' + l[1]; @@ -15,3 +14,22 @@ openUrl(url) async { throw 'Could not launch $url'; } } + +String getPrayerName(int index) { + switch (index) { + case 0: + return "Sehar Time/Fajr"; + case 1: + return "Sunrise"; + case 2: + return "Dhuhr"; + case 3: + return "Asr"; + case 4: + return "Iftar Time/Maghrib"; + case 5: + return "Isha"; + default: + return "Unknown"; + } +}