Flutter马来西亚祈祷时间插件waktu_solat_malaysia的使用

Flutter马来西亚祈祷时间插件waktu_solat_malaysia的使用

这是一包Dart用于根据JAKIM的时间表获取马来西亚的祈祷时间。

特性 🤔

该插件允许你:

  • 获取指定时间段和指定祈祷时间区的祈祷时间列表。
  • 根据指定的祈祷时间区获取今天的祈祷时间。
  • 根据给定的坐标确定祈祷时间区。

开始 😎

在开始使用此插件之前,请确保满足以下前提条件:

  1. 在你的pubspec.yaml文件中添加此插件:
    dependencies:
      waktu_solat_malaysia: ^1.2.1
    
  2. 然后运行命令:
    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获取:

  1. TempohJadual.harini
  2. TempohJadual.minggu
  3. TempohJadual.bulan
  4. TempohJadual.tahun
  5. 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

1 回复

更多关于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(),
        ),
      ),
    );
  }
}

解释

  1. 依赖添加:在pubspec.yaml文件中添加waktu_solat_malaysia依赖。
  2. 导入插件:在需要使用该插件的文件中导入它。
  3. 获取祈祷时间:在initState方法中调用WaktuSolatMalaysia.getPrayerTimes方法获取祈祷时间,并更新状态。
  4. 显示祈祷时间:在build方法中,根据获取到的祈祷时间显示相应的信息。如果数据还未获取到,则显示一个加载指示器。

请确保在实际使用时替换为正确的州和城市名称,并根据需要调整UI布局。

回到顶部