Flutter马来西亚祈祷时间插件waktu_solat_malaysia的使用
Flutter马来西亚祈祷时间插件waktu_solat_malaysia的使用
这是一包Dart用于根据JAKIM的时间表获取马来西亚的祈祷时间。
特性 🤔
该插件允许你:
- 获取指定时间段和指定祈祷时间区的祈祷时间列表。
- 根据指定的祈祷时间区获取今天的祈祷时间。
- 根据给定的坐标确定祈祷时间区。
开始 😎
在开始使用此插件之前,请确保满足以下前提条件:
- 在你的
pubspec.yaml
文件中添加此插件:dependencies: waktu_solat_malaysia: ^1.2.1
- 然后运行命令:
flutter pub get
使用 🫵
1. 确定祈祷时间区
import 'package:waktu_solat_malaysia/waktu_solat_malaysia.dart';
void main() {
Koordinat koordinatSemasa = Koordinat(3.1390, 101.6869); // 马来西亚吉隆坡的坐标
ZonWaktuSolat? zon = tentukanZon(koordinatSemasa, namaBandar: 'Kuala Lumpur');
print('祈祷时间区: $zon');
}
2. 获取祈祷时间
有2种方法可以获取祈祷时间。
方法1: 使用TempohJadual
(不包含durasi
)
可以使用以下5种时间范围通过TempohJadual
获取:
TempohJadual.harini
TempohJadual.minggu
TempohJadual.bulan
TempohJadual.tahun
TempohJadual.durasi
默认值为TempohJadual.harini
。
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('星期 ${waktuSolat.hari}: 晨祷 ${waktuSolat.subuh}');
}
} else {
print('未能获取祈祷时间列表。');
}
}
方法2: 使用TempohJadual
(包含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 // 明天的日期
)
);
注意! 🐥
服务器无法响应如果提供的日期涉及不同的年份。
例如,如果请求日期是2023年12月31日,并且你使用了TempohJadual.minggu
,
接下来的7天属于不同的年份,那么服务器将返回错误信息Server error: Sorry, cannot provide prayer schedule if the year is different
。
这同样适用于TempohJadual.durasi
如果提供的日期属于不同的年份。
更改时间格式
你可以根据需要更改时间格式。例如:
使用.keDateTime
// 继续上面的代码
final waktuAsar = waktuSolat?[0].asar;
final DateTime asarDateTime = waktuAsar.keDateTime;
使用.keFormat24Jam
// 继续上面的代码
print(waktuAsar.keFormat24Jam); // 输出: 16:24
// 如果前面有零
print(waktuSubuh.keFormat24Jam); // 输出: 06:10
类、枚举及其特性 👀
枚举 ZonWaktuSolat
完整的列表及其区域代码可以在JAKIM的E-Solat网站上找到。
枚举 TempohJadual
.harini
.minggu
.bulan
.tahun
.durasi
类 Koordinat
参数 | 数据类型 | 是否可空 |
---|---|---|
latitud |
double |
❌ |
longitud |
double |
❌ |
类 WaktuSolat
参数 | 数据类型 | 是否可空 |
---|---|---|
hari |
String |
✅ |
hijrah |
String |
✅ |
masihi |
String |
✅ |
imsak |
String |
✅ |
subuh |
String |
✅ |
syuruk |
String |
✅ |
zohor |
String |
✅ |
asar |
String |
✅ |
magrib |
String |
✅ |
isyak |
String |
✅ |
完整示例Demo
import 'package:waktu_solat_malaysia/waktu_solat_malaysia.dart';
void main() async {
// 获取祈祷时间区
final zon = tentukanZon(
Koordinat(3.1390, 101.6869),
namaBandar: 'Kuala Lumpur',
);
// 今天的祈祷时间表
final harini = await dapatkanJadualWaktuSolat(zon!);
// 本周的祈祷时间表
final minggu = await dapatkanJadualWaktuSolat(
zon,
tempohJadual: TempohJadual.minggu,
);
// 自定义时间段的祈祷时间表
final tarikhHarini = DateTime.now();
final hariniDanEsok = await dapatkanJadualWaktuSolat(
zon,
tempohJadual: TempohJadual.durasi,
mula: tarikhHarini,
tamat: DateTime(
tarikhHarini.year,
tarikhHarini.month,
tarikhHarini.day + 1,
),
);
}
更多关于Flutter马来西亚祈祷时间插件waktu_solat_malaysia的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter马来西亚祈祷时间插件waktu_solat_malaysia的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中集成和使用waktu_solat_malaysia
插件的示例代码。这个插件用于获取马来西亚的祈祷时间。
第一步:添加依赖
首先,在pubspec.yaml
文件中添加waktu_solat_malaysia
依赖:
dependencies:
flutter:
sdk: flutter
waktu_solat_malaysia: ^最新版本号 # 请替换为最新版本号
然后运行flutter pub get
来获取依赖。
第二步:导入插件
在你需要使用该插件的Dart文件中导入它:
import 'package:waktu_solat_malaysia/waktu_solat_malaysia.dart';
第三步:使用插件获取祈祷时间
以下是一个简单的示例,展示如何使用waktu_solat_malaysia
插件来获取并显示马来西亚的祈祷时间:
import 'package:flutter/material.dart';
import 'package:waktu_solat_malaysia/waktu_solat_malaysia.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
late PrayerTimes prayerTimes;
@override
void initState() {
super.initState();
_getPrayerTimes();
}
Future<void> _getPrayerTimes() async {
try {
// 替换为实际的州和城市
String state = 'Selangor';
String city = 'Shah Alam';
// 获取祈祷时间
PrayerTimesResult result = await WaktuSolatMalaysia.getPrayerTimes(state: state, city: city);
// 更新状态
setState(() {
prayerTimes = result.prayerTimes!;
});
} catch (e) {
print('Error getting prayer times: $e');
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('马来西亚祈祷时间'),
),
body: Center(
child: prayerTimes.fajr != null
? Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Fajr: ${prayerTimes.fajr!}'),
Text('Dhuhr: ${prayerTimes.dhuhr!}'),
Text('Asr: ${prayerTimes.asr!}'),
Text('Maghrib: ${prayerTimes.maghrib!}'),
Text('Isha: ${prayerTimes.isha!}'),
],
)
: CircularProgressIndicator(),
),
),
);
}
}
解释
- 依赖添加:在
pubspec.yaml
文件中添加waktu_solat_malaysia
依赖。 - 导入插件:在需要使用该插件的文件中导入它。
- 获取祈祷时间:在
initState
方法中调用WaktuSolatMalaysia.getPrayerTimes
方法获取祈祷时间,并更新状态。 - 显示祈祷时间:在
build
方法中,根据获取到的祈祷时间显示相应的信息。如果数据还未获取到,则显示一个加载指示器。
请确保在实际使用时替换为正确的州和城市名称,并根据需要调整UI布局。