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布局。

回到顶部