zaiehilmi / flutter_waktu_solat_my

Pakej dart untuk mendapatkan waktu solat di Malaysia berdasarkan jadual daripada JAKIM.
https://pub.dev/packages/waktu_solat_malaysia
MIT License
0 stars 0 forks source link

Ini ialah pakej Dart untuk mendapatkan waktu solat di Malaysia berdasarkan jadual daripada JAKIM.

Ciri-ciri 🤔

Pakej ini membolehkan anda:

Memulakan 😎

Sebelum memulakan penggunaan pakej ini, pastikan anda memenuhi prasyarat berikut:

  1. Tambahkan pakej ini ke dalam fail pubspec.yaml anda:
    dependencies:
        waktu_solat_malaysia: ^1.2.1
  2. Kemudian, jalankan perintah:
    flutter pub get

Penggunaan 🫵

1. Menentukan Zon Waktu Solat

import 'package:waktu_solat_malaysia/waktu_solat_malaysia.dart';

void main() {
  Koordinat koordinatSemasa = Koordinat(3.1390, 101.6869); // Koordinat Kuala Lumpur
  ZonWaktuSolat? zon = tentukanZon(koordinatSemasa, namaBandar: 'Kuala Lumpur');
  print('Zon waktu solat: $zon');
}

2. Mendapatkan Waktu Solat

terdapat 2 cara untuk mendapatkan waktu solat.

Cara 1: TempohJadual selain durasi

terdapat 5 tempoh yang boleh didapati melalui TempohJadual:

  1. TempohJadual.harini
  2. TempohJadual.minggu
  3. TempohJadual.bulan
  4. TempohJadual.tahun
  5. TempohJadual.durasi

TempohJadual.harini ialah nilai lalai (default)

import 'package:waktu_solat_malaysia/waktu_solat_malaysia.dart';

void main() async {
   List<WaktuSolat>? senaraiWaktuSolat = await dapatkanJadualWaktuSolat(
           ZonWaktuSolat.WLY01,
           tempohJadual: TempohJadual.minggu
   );

   if (senaraiWaktuSolat != null) {
      for (var waktuSolat in senaraiWaktuSolat) {
         print('Hari ${waktuSolat.hari}: subuh ${waktuSolat.subuh}');
      }
   } else {
      print('Gagal mendapatkan senarai waktu solat.');
   }
}

Cara 2: TempohJadual menggunakan durasi

import 'package:waktu_solat_malaysia/waktu_solat_malaysia.dart';

final harini = DateTime.now();

final waktuSolat = await dapatkanJadualWaktuSolat(
   ZonWaktuSolat.WLY01,
   tempohJadual: TempohJadual.durasi,
   mula: harini,
   tamat: DateTime(
      harini.year,
      harini.month,
      harini.day + 1 // tarikh esok
));

Perhatian! 🐥

Pelayan tidak dapat memberikan respon jika tarikh yang diberi melibatkan perbezaan tahun.

Sebagai contoh, jika tarikh request ialah 31 Disember 2023 dan anda menggunakan TempohJadual.minggu, 7 hari berikutnya merupakan tahun berbeza maka pelayan akan memberikan ralat Ralat pada pelayan: Maaf, tidak dapat memberikan jadual waktu solat jika tahun berbeza.

Hal ini terpakai juga untuk TempohJadual.durasi jika tarikh diberikan ialah berbeza tahunnya.

3. Tukar format masa

anda boleh menukar format masa mengikut kesesuaian. contohnya:

Gunakan .keDateTime

// kod bersambung dari atas
final waktuAsar = waktuSolat?[0].asar;
final DateTime = waktuAsar.keDateTime;

Gunakan .keFormat24Jam

// kod bersambung dari atas
print(waktuAsar.keFormat24Jam) // output: 16:24

// jika ada sifar di hadapan
print(waktuSubuh.keFormat24Jam) // output: 06:10

Senarai kelas, enum dan ciri-cirinya 👀

enum ZonWaktuSolat

senarai penuh berserta nama kawasan kod zon tersebut boleh didapati di laman E-Solat oleh JAKIM

enum TempohJadual

class Koordinat

parameter jenis data nullable
latitud double
longitud double

class WaktuSolat

parameter jenis data nullable
hari String
hijrah String
masihi String
imsak String
subuh String
syuruk String
zohor String
asar String
magrib String
isyak String