Flutter牛津词典查询插件oxford_dictionary的使用
Flutter 牛津词典查询插件 oxford_dictionary 的使用
Oxford Dictionary API Wrapper in Dart
该包正在开发中,并未包含所有 API 功能。欢迎贡献!
Oxford Dictionaries API 提供了一种简单的方法来访问强大的词汇数据(单词、定义、翻译、音频发音、同义词、反义词、词性等),以在您的应用和网站中使用。
为了测试包的可靠性,在 test/fixtures/{entries,lemmas}/
文件夹中保存了 100 个请求及其相应的响应。如果您遇到任何空值错误,请在存储库的 Issues 页面上打开一个问题。
查看此项目的贡献指南。
开始使用
首先,克隆项目仓库:
git clone git@github.com:rIIh/oxford-dictionary.git && cd oxford-dictionary
然后安装依赖:
flutter pub get
最后运行构建脚本:
flutter pub run build_runner build
如何使用
请参阅示例文件以获取更多用例信息。
void main() async {
final dictionary = OxfordDictionary(
'en',
Platform.environment['APP_ID'],
Platform.environment['APP_KEY'],
);
// 查询单词定义
final word = await dictionary.entries.search(wordString);
// 获取短语
final phrases = word.phrases.values
.map((phrases) => phrases)
.expand((phrases) => phrases)
.toList();
// 获取发音
final pronunciations = word.variants.values
.map((e) => e.map((e) => e.pronunciations))
.expand((pronunciations) => pronunciations)
.toList();
// 获取词义
final senses = word.variants.values
.map((variants) => variants.map((variant) => variant.senses))
.expand((senses) => senses)
.toList();
// 获取定义
final definitions = senses
.map((e) => e.map((e) => e.definitions))
.expand((definitions) => definitions)
.toList();
// 获取子词义
final subSenses = senses
.map((e) => e.map((e) => e.subSenses))
.expand((subSenses) => subSenses)
.toList();
}
完整示例代码
以下是完整的示例代码,展示了如何使用插件进行查询并处理返回的数据。
import 'dart:io';
import 'package:http/http.dart' as http;
import 'package:oxford_dictionary/oxford_dictionary.dart';
void main() {
find('programming').then((word) {});
}
Future<Word?> find(String wordString, [http.Client? client]) async {
final dictionary = OxfordDictionary(
'en',
Platform.environment['APP_ID'] ?? 'test_app_id',
Platform.environment['APP_KEY'] ?? 'test_app_key',
client: client,
);
// 查询单词定义
final word = await dictionary.entries.search(wordString).then((value) => value!);
print(word);
// 获取短语
final phrases = word.phrases.values
.map((phrases) => phrases)
.expand((phrases) => phrases)
.toList();
// 获取发音
final pronunciations = word.variants.values
.map((e) => e.map((e) => e.pronunciations))
.expand((pronunciations) => pronunciations)
.toList();
// 获取词义
final senses = word.variants.values
.map((variants) => variants.map((variant) => variant.senses))
.expand((senses) => senses)
.toList();
// 获取定义
final definitions = senses
.map((e) => e.map((e) => e.definitions))
.expand((definitions) => definitions)
.toList();
// 获取子词义
final subSenses = senses
.map((e) => e.map((e) => e.subSenses))
.expand((subSenses) => subSenses)
.toList();
print([phrases, pronunciations, senses, definitions, subSenses].join('\n'));
return word;
}
Future<Lemmas?> findLemmas(String wordString, [http.Client? client]) async {
final dictionary = OxfordDictionary(
'en',
Platform.environment['APP_ID'] ?? 'test_app_id',
Platform.environment['APP_KEY'] ?? 'test_app_key',
client: client,
);
final lemmas = await dictionary.lemmas.search(wordString).then((value) => value!);
print(lemmas);
for (final inflection in lemmas.inflections.entries) {
final category = inflection.key;
final inflectionsByCategory = inflection.value;
print("Searching words defenitions for inflections of ${wordString} for ${category.text} category");
final wordsForCategory = await Future.wait(
inflectionsByCategory.map((e) => find(e.text)).toList(),
);
print(wordsForCategory.whereType<Word>().map((e) => e.variants).join(', '));
}
return lemmas;
}
更多关于Flutter牛津词典查询插件oxford_dictionary的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter牛津词典查询插件oxford_dictionary的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个使用Flutter的oxford_dictionary
插件进行牛津词典查询的示例代码。这个插件允许你在Flutter应用中集成牛津词典的功能,从而可以查询单词的定义和发音等信息。
首先,你需要在你的pubspec.yaml
文件中添加oxford_dictionary
依赖:
dependencies:
flutter:
sdk: flutter
oxford_dictionary: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
接下来,是一个简单的Flutter应用示例,它展示了如何使用oxford_dictionary
插件来查询单词的定义:
import 'package:flutter/material.dart';
import 'package:oxford_dictionary/oxford_dictionary.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Oxford Dictionary Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final OxfordDictionary _dictionary = OxfordDictionary();
String _query = '';
String _result = '';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Oxford Dictionary Example'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
TextField(
decoration: InputDecoration(
labelText: 'Enter a word',
),
onChanged: (value) {
setState(() {
_query = value;
});
},
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () async {
setState(() {
_result = '';
});
try {
final result = await _dictionary.getDefinitions(_query);
if (result.isNotEmpty) {
setState(() {
_result = result.first.definition;
});
} else {
setState(() {
_result = 'No definitions found.';
});
}
} catch (e) {
setState(() {
_result = 'Error: ${e.message}';
});
}
},
child: Text('Search'),
),
SizedBox(height: 16),
Text(
_result,
style: TextStyle(fontSize: 16),
),
],
),
),
);
}
}
注意事项:
-
API Key:
oxford_dictionary
插件可能需要你提供API密钥才能访问牛津词典的数据。你需要从牛津词典的API提供商那里获取一个API密钥,并在插件初始化时设置它。通常,这可以在插件的文档中找到如何设置的说明。 -
错误处理:在实际应用中,你应该添加更多的错误处理逻辑,比如网络错误、API限制等。
-
UI优化:这个示例的UI非常简单,你可以根据需要进行优化和美化。
-
数据展示:这个示例只展示了第一个定义,你可以修改代码来展示更多的定义或提供其他信息(如发音、词性等)。
-
插件版本:确保你使用的是最新版本的
oxford_dictionary
插件,因为API和功能可能会随着版本更新而变化。
希望这个示例能帮助你开始在Flutter应用中集成牛津词典查询功能!