Flutter古兰经API集成插件lamsz_quran_api的使用
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
更多关于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});
}
注意事项
-
API 方法:上面的代码假设
QuranApi
类有一个getSurahData
方法,这只是一个示例。你需要查阅lamsz_quran_api
插件的文档来了解实际可用的方法和参数。 -
数据结构:
SurahData
类是一个假设的数据结构,用于存储从API返回的数据。你需要根据实际的API响应来定义这个类。 -
错误处理:在实际应用中,你应该添加更多的错误处理和用户反馈机制。
-
插件文档:始终参考
lamsz_quran_api
插件的官方文档和示例代码,以获取最新和最准确的信息。 -
网络权限:如果你的应用需要访问网络,别忘了在
AndroidManifest.xml
和Info.plist
中添加必要的网络权限声明。
希望这个示例能帮助你开始在Flutter项目中集成和使用lamsz_quran_api
插件!