Flutter古兰经云服务插件alquran_cloud的使用
Flutter古兰经云服务插件alquran_cloud的使用
alquran_cloud
是一个非官方的 API 封装库,用于访问免费的伊斯兰教 API(alquran.cloud)。该库允许开发者获取古兰经的不同版本、章节、节段等信息。
使用方法
以下是如何使用 alquran_cloud
插件的基本示例:
import 'package:alquran_cloud/alquran_cloud.dart' as quran_cloud;
void main(List<String> args) async {
/// 启用日志记录(默认禁用)
quran_cloud.quranCloud.enableLogs = true;
/// 获取所有版本
final allEditions = await quran_cloud.getAllEditions();
/// 查询特定格式的语言类型
final editionsQuery = await quran_cloud.getAllEditions(
format: 'text', // 或者 'audio'
language: 'ar', // 使用 .getEditionSupportedLanguages(); 方法获取所有可用语言
type: 'quran', // 使用 .getEditionTypes() 方法获取所有可用类型
);
/// 获取特定版本的古兰经
final quran = await quran_cloud.getQuranByEdition(allEditions.first);
/// 通过章节编号和版本查询章节
final surah = await quran_cloud.getSurahByEdition(1, editionsQuery.first);
/// 通过节段编号和版本查询节段
final aya = await quran_cloud.getAyaByNumber(2, editionsQuery.first);
print(aya.text); // 输出: الْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ
}
支持的端点
- ✅ 版本
- ✅ 古兰经
- ✅ 节段
- ✅ 章节
- ✅ 节
- ❌ 段落
- ❌ 小节
- ❌ 页
- ❌ 半章
- ❌ 四分之一章
- ❌ 礼拜鞠躬
- ❌ 元数据
特性
- ❌ 缓存(等待此 PR 完成 https://github.com/hurshi/dio-http-cache/pull/84)
- ❌ 祷告时间
- ❌ 文档
- ❌ 重新启动
示例代码
以下是完整的示例代码,可以在 GitHub 上查看:
import 'package:alquran_cloud/alquran_cloud.dart' as quran_cloud;
Future<void> main(List<String> args) async {
/// 启用日志记录(默认禁用)
quran_cloud.quranCloud.enableLogs = true;
/// 获取所有版本
final allEditions = await quran_cloud.getAllEditions();
/// 查询特定格式的语言类型
final editionsQuery = await quran_cloud.getAllEditions(
format: 'text', // 或者 'audio'
language: 'ar', // 使用 .getEditionSupportedLanguages(); 方法获取所有可用语言
type: 'quran', // 使用 .getEditionTypes() 方法获取所有可用类型
);
/// 获取特定版本的古兰经
final quran = await quran_cloud.getQuranByEdition(allEditions.first);
/// 通过章节编号和版本查询章节
final surah = await quran_cloud.getSurahByEdition(1, editionsQuery.first);
/// 通过节段编号和版本查询节段
final aya = await quran_cloud.getAyaByNumber(2, editionsQuery.first);
print(aya.text); // 输出: الْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ
}
更多关于Flutter古兰经云服务插件alquran_cloud的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter古兰经云服务插件alquran_cloud的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用alquran_cloud
插件的一个示例。这个插件通常用于从云服务中获取古兰经的数据。假设你已经有一个Flutter项目,并且希望在项目中集成alquran_cloud
插件,以下是具体步骤和代码示例。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加alquran_cloud
依赖:
dependencies:
flutter:
sdk: flutter
alquran_cloud: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来获取依赖。
2. 导入插件
在你需要使用alquran_cloud
插件的Dart文件中导入它:
import 'package:alquran_cloud/alquran_cloud.dart';
3. 初始化插件并获取数据
以下是一个示例代码,展示如何初始化插件并从云服务中获取古兰经的章节和经文数据:
import 'package:flutter/material.dart';
import 'package:alquran_cloud/alquran_cloud.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
late AlquranCloud _alquranCloud;
late List<Surah> _surahList;
late List<Ayah> _ayahList;
@override
void initState() {
super.initState();
_alquranCloud = AlquranCloud();
// 获取所有章节列表
_alquranCloud.getSurahList().then((value) {
setState(() {
_surahList = value;
});
}).catchError((error) {
print('Error fetching surah list: $error');
});
// 获取特定章节的经文列表(例如第1章)
_alquranCloud.getAyahListBySurahId(1).then((value) {
setState(() {
_ayahList = value;
});
}).catchError((error) {
print('Error fetching ayah list: $error');
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Al-Quran Cloud Example'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('Surah List:', style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold)),
SizedBox(height: 10),
_surahList.isEmpty
? CircularProgressIndicator()
: ListView.builder(
shrinkWrap: true,
itemCount: _surahList.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(_surahList[index].name!),
subtitle: Text('Chapter: ${_surahList[index].number!}'),
);
},
),
SizedBox(height: 20),
Text('Ayah List for Surah 1:', style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold)),
SizedBox(height: 10),
_ayahList.isEmpty
? CircularProgressIndicator()
: ListView.builder(
shrinkWrap: true,
itemCount: _ayahList.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(_ayahList[index].text!),
subtitle: Text('Verse: ${_ayahList[index].number!}'),
);
},
),
],
),
),
),
);
}
}
// Surah 和 Ayah 类可能需要根据实际插件提供的模型进行调整
class Surah {
int? number;
String? name;
Surah({this.number, this.name});
}
class Ayah {
int? number;
String? text;
Ayah({this.number, this.text});
}
注意
-
模型调整:
Surah
和Ayah
类可能需要根据实际插件提供的模型进行调整。你可以查看alquran_cloud
插件的文档或源代码以获取准确的模型定义。 -
错误处理:示例代码中包含了基本的错误处理,但在实际应用中,你可能需要更详细的错误处理逻辑。
-
UI优化:示例中的UI非常基础,你可能需要根据实际需求进行优化和美化。
-
API限制:请注意,使用云服务可能受到API调用频率和数量的限制,确保你了解并遵守这些限制。
通过上述步骤,你应该能够在Flutter项目中成功集成alquran_cloud
插件,并从云服务中获取古兰经数据。