Flutter宗教信息查看插件dzikr的使用

Flutter宗教信息查看插件dzikr的使用

Bismillah, Alhamdulillah, Washalatu Wasalam 'Ala Rasulillah.
赞主颂圣,愿真主赐福我们的先知穆罕默德。

现代科技发展迅速。我们知道,技术可以成为帮助我们完成日常任务和工作的强大工具。如果使用得当,它还能支持我们的敬拜活动。通过手机等设备,我们可以轻松访问祈祷时间表、古兰经和一系列祷文等基础工具。

这些工具现在非常普遍,你可以在各种应用中看到它们的身影。因此,我们受到启发,希望通过Dzikr插件让开发者能够快速、轻松地将这些功能带给用户。


Dzikr简介

Dzikr 是一个为Flutter开发准备的伊斯兰特色工具集合。它整合了许多依赖项和API,并将它们组织处理为可以直接在你的应用程序中使用的功能。


工具列表

以下是Dzikr的主要工具清单:

  • Prayer Time Tool(祈祷时间工具)
  • Quran Tool(古兰经工具)
  • Book Tool(用于祷文的书籍工具)

当前版本信息

警告
Dzikr目前处于测试阶段。部分功能仍在最佳实践研究中,可能会有bug,未来版本可能会发生重大更改。


安装

使用pub安装:

flutter pub add dzikr

注意
每个特定工具都有其需求,你可以从每个工具的部分了解具体要求。

提示:祈祷工具需要在Android清单文件和iOS的Info.plist中添加位置权限,因为该工具包含geolocator;古兰经工具需要静态的古兰经.json文件;书籍工具同样如此。

在你的Dart文件中使用Dzikr时,导入它:

import 'package:dzikr/dzikr.dart';

祈祷时间工具

祈祷时间工具基于用户的位置显示祈祷时间表,该包包含geolocator并需要GPS权限。该工具返回今天的祈祷时间和每月的祈祷时间表,还可以显示设备位置信息。

要求

该包包括需要用户授权的geocoding。请遵循官方的Geocoding 使用指南,为Android和iOS添加权限。

完成后,工具即可使用。

使用
  1. 初始化工具
QuranTool quranTool = QuranTool.init();
  1. 获取祈祷时间
getPrayerTime() async {
  try {
      PrayerTimeTool prayerTimeTool = await PrayerTimeTool.init();
      PrayerTime prayer = prayerTimeTool.prayer;
    } on DzikrErrorConfig catch (error) {
      // 错误处理
      print(error.message);
    }
}
  1. 向用户展示数据
Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: [
        Text(prayer
            .todaySchedule.closestPrayer.closestPrayer,
        style: ThemeConfig.textTheme(context)
            .headline1
        ),
        Text(prayer.todaySchedule.closestPrayer.closestTime,
        style: ThemeConfig.textTheme(context)
            .headline2
        ),
        Text("${PrayerTimeTool.findClosestPrayerTime(prayer).todaySchedule.closestPrayer.durationToClosestPrayer.inMinutes} 分钟到 ${prayer.todaySchedule.closestPrayer.closestPrayer}"),
    ],
);

效果很棒✨,感谢真主。


古兰经工具

古兰经是我们希望在本包中实现的最重要的功能之一。该功能仍处于开发阶段,代码有些小问题,但已经可用!

该工具提供了两种模式:页面模式和列表模式。最酷的部分是古兰经工具提供了即时渲染的小部件,我们将详细说明如何使用它。

要求

古兰经工具使用的是静态的古兰经数据,你需要先下载数据,将其放入assets/quran目录中,并在pubspec.yaml中注册资产路径后才能使用。

  1. 下载工具:(暂未提供)
  2. quran目录放入项目的./assets文件夹中。
  3. pubspec.yaml中注册资产路径,如下所示:
assets:
  - assets/quran/

完成后,工具即可使用。

使用

最简单的方法是使用[QuranPageReader]向用户展示古兰经。

  1. 在页面或小部件中返回古兰经页面。
class QuranPage extends StatelessWidget {
  const QuranPage({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return QuranPageReader(
      config: QuranPageReaderConfig(),
    );
  }
}

如果没有错误,古兰经数据将会被处理并展示给用户。

  1. 通过参数设置初始要显示的古兰经页码,甚至可以为[QuranPageReader]添加appbar,或者监听用户翻页。

  2. 使用[QuranPageReaderConfig]可以设置颜色和主题,选择使用页面模式还是列表模式,以及是否显示底部页码指示器。

那么,如何展示章节和段落呢?古兰经工具会为你提供数据。

  1. 初始化古兰经工具
QuranTool quranTool = QuranTool.init();
  1. 获取数据
QuranJuzs juzs = await quranTool.getQuranJuzs();
QuranChapters surah = await quranTool.getQuranChapter();

你还可以手动获取整个古兰经数据,而无需使用[QuranPageReader]

List<QuranPage> pages = await quranTool.getQuranPages();

书籍工具

书籍工具实际上是用于展示祷文和祈祷的小部件,我们称之为书籍,因为它包含了一组祈祷和祷文的列表。不仅如此,在未来我们还希望呈现圣训书籍。

与古兰经工具类似,你需要先下载书籍数据。

要求
  1. 下载工具:(暂未提供)
  2. quran目录放入项目的./assets文件夹中。
  3. pubspec.yaml中注册资产路径,如下所示:
assets:
  - assets/book/
使用
  1. 初始化工具
BookTool bookTool = BookTool.init();
  1. 获取数据
List<Book> duaBook = await bookTool.getDuaBook();
List<Book> dzikrBook = await bookTool.getDzikrBook();
  1. 向用户展示祷文和祈祷,你可以使用ListView来渲染每个项目。

  2. 你可以自行处理书籍详情,也可以通过[DzikrReader]轻松实现,如下所示:

class DzikrDetailPage extends StatelessWidget {
  const DzikrDetailPage({Key? key, required this.book}) : super(key: key);

  final Book book;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBarWidget.getAppBar(context, title: book.title!),
      body: DzikrReader(book: book),
    );
  }
}

更多关于Flutter宗教信息查看插件dzikr的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter宗教信息查看插件dzikr的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


dzikr 是一个用于在 Flutter 应用中查看和管理宗教信息(如伊斯兰教祈祷文、古兰经经文等)的插件。它可以帮助开发者在应用中轻松集成这些功能,为用户提供方便的宗教内容访问。

以下是如何在 Flutter 项目中使用 dzikr 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 dzikr 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  dzikr: ^1.0.0  # 请确保使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在需要使用 dzikr 插件的 Dart 文件中,导入插件:

import 'package:dzikr/dzikr.dart';

3. 使用插件

dzikr 插件提供了多种功能,比如获取祈祷文、古兰经经文等。以下是一些基本的使用示例:

获取祈祷文

import 'package:flutter/material.dart';
import 'package:dzikr/dzikr.dart';

class DzikrPage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Dzikr'),
      ),
      body: FutureBuilder<List<Dzikr>>(
        future: Dzikr.getDzikrList(),  // 获取祈祷文列表
        builder: (context, snapshot) {
          if (snapshot.connectionState == ConnectionState.waiting) {
            return Center(child: CircularProgressIndicator());
          } else if (snapshot.hasError) {
            return Center(child: Text('Error: ${snapshot.error}'));
          } else if (!snapshot.hasData || snapshot.data!.isEmpty) {
            return Center(child: Text('No data available'));
          } else {
            return ListView.builder(
              itemCount: snapshot.data!.length,
              itemBuilder: (context, index) {
                var dzikr = snapshot.data![index];
                return ListTile(
                  title: Text(dzikr.title),
                  subtitle: Text(dzikr.content),
                  onTap: () {
                    // 处理点击事件
                  },
                );
              },
            );
          }
        },
      ),
    );
  }
}

获取古兰经经文

import 'package:flutter/material.dart';
import 'package:dzikr/dzikr.dart';

class QuranPage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Quran'),
      ),
      body: FutureBuilder<List<QuranAyah>>(
        future: Quran.getAyahList(surahNumber: 1),  // 获取第一章的古兰经经文
        builder: (context, snapshot) {
          if (snapshot.connectionState == ConnectionState.waiting) {
            return Center(child: CircularProgressIndicator());
          } else if (snapshot.hasError) {
            return Center(child: Text('Error: ${snapshot.error}'));
          } else if (!snapshot.hasData || snapshot.data!.isEmpty) {
            return Center(child: Text('No data available'));
          } else {
            return ListView.builder(
              itemCount: snapshot.data!.length,
              itemBuilder: (context, index) {
                var ayah = snapshot.data![index];
                return ListTile(
                  title: Text(ayah.arabicText),
                  subtitle: Text(ayah.translation),
                  onTap: () {
                    // 处理点击事件
                  },
                );
              },
            );
          }
        },
      ),
    );
  }
}
回到顶部