Flutter古兰经API集成插件lamsz_quran_api的使用

发布于 1周前 作者 nodeper 来自 Flutter

Flutter古兰经API集成插件lamsz_quran_api的使用

关于Lamsz Quran API

Lamsz Quran API 是一个混合离线和云端的古兰经API,提供了创建Flutter古兰经应用程序的基本功能。为了保持包尽可能小,它采用了混合模式。

功能

Lamsz Quran API 提供了以下功能:

  • 获取章节列表,包括名称、拉丁名称、节数、章节类型(麦加/麦地那)、来自mp3quran.net的音频URL。
  • 根据名称关键字过滤章节列表。
  • 获取单章内容。
  • 获取单节内容。
  • 获取节的翻译(英语/印尼语/马来语)。
  • 获取节的音译(英语/印尼语)。
  • 获取基于翻译语言的节注释。

安装

pubspec.yaml文件中添加依赖:

dependencies:
  lamsz_quran_api:

在需要使用的文件中导入包:

import 'package:lamsz_quran_api/lamsz_quran_api.dart';

使用方法

获取章节列表

返回包含所有章节及其详细信息的古兰经数据。 示例:

getSurahList();

返回结果示例:

{
    "surah": [
        {
            "id": 1,
            "name_arabic": "الفاتحة",
            "name_latin": "Al Fatihah",
            "asma": "الفاتحة",
            "ayah": 7,
            "type": "Makkiyah",
            "transliteration": "Al Fatihah",
            "audio": "https://server8.mp3quran.net/afs/001.mp3"
        },
        // ...
    ]
}

搜索章节

可以通过章节名称关键字来过滤章节列表。 示例:

searchSurah('Fatihah');

返回结果与获取章节列表相同。

获取单章数据

返回章节名称、章节内容、翻译及音译等信息。 示例:

getSurahData(
  surahNumber: 1,
  translationLang: 'bahasa',
  transliterationLang: 'bahasa',
  tafseer: 'jalalayn'
);

返回结果示例:

{
    "id": 1,
    "name": "الفاتحة",
    "remark": "...",
    "translationLang": "bahasa",
    "transliterationLang": "bahasa",
    "tafseer": "jalalayn",
    "aya": [
        {
            "id": 1,
            "arabic_index": "\u0661",
            "arabic": "بِسْمِ ٱللَّهِ ٱلرَّحْمَـٰنِ ٱلرَّحِيمِ",
            "translation": "Dengan menyebut nama Allah Yang Maha Pengasih lagi Maha Penyayang.",
            "transliteration": "...",
            "tafseer": ""
        },
        // ...
    ]
}

获取单节数据

返回节编号、阿拉伯文文本、翻译、音译等信息。 示例:

getAya(
  surahNumber: 1,
  aya: 1,
  translationLang: 'english',
  transliterationLang: 'english',
  tafseer: 'shaheehinter'
);

返回结果示例:

{
    "id": 1,
    "arabic_index": "\u0661",
    "arabic": "بِسْمِ ٱللَّهِ ٱلرَّحْمَـٰنِ ٱلرَّحِيمِ",
    "translation": "In the name of Allah, the Most Gracious, the Most Merciful.",
    "transliteration": "...",
    "tafseer": "..."
}

示例应用

下面是一个简单的示例应用,展示如何使用Lamsz Quran API:

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

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Lamsz Quran Demo',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const MyHomePage(title: 'Quran App'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  var surahData = SurahContentModel();
  var surahListData = <SurahHeaderModel>[];
  var aya11 = Aya();
  var defaultLang = 'bahasa';
  var defaultSurah = 1;
  var defaultAyah = 1;
  var withTransliteration = true;
  var withTafseer = true;
  var withTranslation = true;
  var tafseer = {'bahasa': 'jalalayn', 'english': 'shaheehinter'};

  loadSurah(String translationLang) async {
    var surah = await getSurahData(
        surahNumber: defaultSurah,
        translationLang: withTranslation ? translationLang : null,
        transliterationLang: withTransliteration ? translationLang : null,
        tafseer: withTafseer ? tafseer[defaultLang] : null);
    var surahList = await getSurahList();
    var aya = await getAyaData(
        surahNumber: defaultSurah,
        ayaNumber: defaultAyah,
        translationLang: withTranslation ? translationLang : null,
        transliterationLang: withTransliteration ? translationLang : null,
        tafseer: withTafseer ? tafseer[defaultLang] : null);
    setState(() {
      surahData = surah;
      surahListData = surahList;
      aya11 = aya;
    });
  }

  [@override](/user/override)
  void initState() {
    loadSurah(defaultLang);
    super.initState();
  }

  // ... (其他方法如changeLang, changeSurah等)

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(widget.title)),
      body: Column(
        children: [
          Expanded(
            flex: 1,
            child: SingleChildScrollView(
              scrollDirection: Axis.horizontal,
              child: Row(
                children: [
                  TextButton(onPressed: changeLang, child: const Text('Change Language')),
                  TextButton(onPressed: changeSurah, child: const Text('Change Surah')),
                  TextButton(onPressed: changeAya, child: const Text('Change Aya')),
                  TextButton(
                      onPressed: toggleTranslation,
                      child: Text('Translation ${withTranslation ? "ON" : "OFF"}')),
                  TextButton(
                      onPressed: toggleTransliteration,
                      child: Text('Transliteration ${withTransliteration ? "ON" : "OFF"}')),
                  TextButton(
                      onPressed: toggleTafseer,
                      child: Text('Tafseer ${withTafseer ? "ON" : "OFF"}')),
                ],
              ),
            ),
          ),
          Expanded(
            flex: 3,
            child: Column(
              children: [
                const Text('getSurahList()'),
                Expanded(
                  child: SizedBox(
                    height: 200,
                    child: ListView.builder(
                        controller: ScrollController(),
                        itemCount: surahListData.length,
                        itemBuilder: (context, i) {
                          return Padding(
                            padding: const EdgeInsets.only(top: 8.0, bottom: 8.0, left: 3.0, right: 3.0),
                            child: ListTile(
                              leading: Text(surahListData[i].arabicIndex),
                              title: Text(surahListData[i].toString(), textAlign: TextAlign.start),
                            ),
                          );
                        }),
                  ),
                ),
              ],
            ),
          ),
          Expanded(
            flex: 3,
            child: Column(
              children: [
                Text("getSurahData(surahNumber: $defaultSurah, translationLang: $defaultLang)"),
                Text('Surah : ${surahData.name ?? ''}'),
                Expanded(
                  child: SizedBox(
                    height: 200,
                    child: ListView.builder(
                        controller: ScrollController(),
                        itemCount: (surahData.aya ?? []).length,
                        itemBuilder: (context, i) {
                          return Padding(
                            padding: const EdgeInsets.only(top: 8.0, bottom: 8.0, left: 3.0, right: 3.0),
                            child: ListTile(
                              leading: Text(surahData.aya![i].arabicIndex),
                              title: Text(
                                '${surahData.aya![i].toString()}\n surahNameTranslation: ${surahData.nameTranslation ?? ""}',
                                textAlign: TextAlign.start,
                              ),
                            ),
                          );
                        }),
                  ),
                ),
              ],
            ),
          ),
          Expanded(
            flex: 2,
            child: SingleChildScrollView(
              child: Column(
                children: [
                  Text("""getAyaData(surahNumber: $defaultSurah, ayaNumber: $defaultAyah,
                      translationLang: $defaultLang );"""),
                  Text(aya11.toString()),
                ],
              ),
            ),
          ),
        ],
      ),
    );
  }
}

更多关于Flutter古兰经API集成插件lamsz_quran_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter古兰经API集成插件lamsz_quran_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成并使用lamsz_quran_api插件的一个示例代码案例。这个插件假设是用来访问和处理与古兰经相关的数据。请注意,由于我无法实时验证插件的功能和API的具体实现细节,以下代码是一个假设性的示例,旨在展示如何集成和使用一个类似的Flutter插件。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加lamsz_quran_api依赖:

dependencies:
  flutter:
    sdk: flutter
  lamsz_quran_api: ^最新版本号  # 请替换为实际的最新版本号

然后运行flutter pub get来安装依赖。

2. 导入插件

在你需要使用该插件的Dart文件中导入它:

import 'package:lamsz_quran_api/lamsz_quran_api.dart';

3. 初始化插件并调用API

下面是一个简单的示例,展示如何初始化插件并调用一个假设的API来获取古兰经章节信息:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late QuranApi _quranApi;
  late Future<SurahData?> _futureSurahData;

  @override
  void initState() {
    super.initState();
    _quranApi = QuranApi();  // 假设这是插件提供的类
    _futureSurahData = _fetchSurahData(1);  // 获取第一章节的信息作为示例
  }

  Future<SurahData?> _fetchSurahData(int surahNumber) async {
    try {
      // 假设getSurahData是插件提供的方法,用于获取指定章节的数据
      SurahData? surahData = await _quranApi.getSurahData(surahNumber);
      return surahData;
    } catch (e) {
      print('Error fetching surah data: $e');
      return null;
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Quran API Example'),
        ),
        body: Center(
          child: FutureBuilder<SurahData?>(
            future: _futureSurahData,
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.waiting) {
                return CircularProgressIndicator();
              } else if (snapshot.hasError) {
                return Text('Error: ${snapshot.error}');
              } else if (snapshot.hasData) {
                SurahData? surahData = snapshot.data;
                return Text(
                  'Surah ${surahData?.name ?? 'Unknown'}:\n${surahData?.verses?.join('\n')}',
                  style: TextStyle(fontSize: 18),
                );
              } else {
                return Text('No data');
              }
            },
          ),
        ),
      ),
    );
  }
}

// 假设这是从插件API返回的数据结构
class SurahData {
  String? name;
  List<String>? verses;

  SurahData({this.name, this.verses});
}

注意事项

  1. API 方法:上面的代码假设QuranApi类有一个getSurahData方法,这只是一个示例。你需要查阅lamsz_quran_api插件的文档来了解实际可用的方法和参数。

  2. 数据结构SurahData类是一个假设的数据结构,用于存储从API返回的数据。你需要根据实际的API响应来定义这个类。

  3. 错误处理:在实际应用中,你应该添加更多的错误处理和用户反馈机制。

  4. 插件文档:始终参考lamsz_quran_api插件的官方文档和示例代码,以获取最新和最准确的信息。

  5. 网络权限:如果你的应用需要访问网络,别忘了在AndroidManifest.xmlInfo.plist中添加必要的网络权限声明。

希望这个示例能帮助你开始在Flutter项目中集成和使用lamsz_quran_api插件!

回到顶部