Skip to content

Commit

Permalink
Refactor
Browse files Browse the repository at this point in the history
Signed-off-by: Muhammad Umer Farooq <[email protected]>
  • Loading branch information
lablnet committed Mar 22, 2024
1 parent 34fbdb6 commit 2932c6c
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 118 deletions.
23 changes: 23 additions & 0 deletions lib/class/PrayerTimes.dart
Original file line number Diff line number Diff line change
@@ -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<String> 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;
}
}
99 changes: 14 additions & 85 deletions lib/pages/Home.dart
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ class _HomeState extends State<Home> 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(
Expand Down Expand Up @@ -88,93 +90,20 @@ class _HomeState extends State<Home> 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"),
Expand Down
44 changes: 13 additions & 31 deletions lib/pages/Monthly.dart
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
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';
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();
Expand All @@ -35,7 +36,10 @@ class _MonthlyState extends State<Monthly> 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<Widget> cards = [];

for (int i = 0; i < 30; i++) {
Expand All @@ -44,11 +48,7 @@ class _MonthlyState extends State<Monthly> 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(
Expand All @@ -58,33 +58,15 @@ class _MonthlyState extends State<Monthly> 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)),
);
}),
],
Expand Down
22 changes: 20 additions & 2 deletions lib/utils.dart
Original file line number Diff line number Diff line change
@@ -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];
Expand All @@ -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";
}
}

0 comments on commit 2932c6c

Please sign in to comment.