Flutter引用名言插件quotesy的功能使用
Flutter引用名言插件quotesy的功能使用
quotes
💬 #
1. 一个鼓舞人心的名言集合。 #
这些名言包含在一个 单一 文件中:
quotes.json
因此它们可以 轻松地 被用于 任何 项目。
2. 一个调用时返回随机名言的模块。 #
为什么? #
我们需要一个可靠且 快速 的名言来源。 获取名言的方式有很多,包括多个API, 但我们想要的是一个 零延迟 的来源, 并且可以(可选地)离线工作, 所以我们从各种来源整理了一个数据库。
什么? #
- 一个包含数千条鼓舞人心名言的文件。
- 一个返回随机名言的模块。
quotes.json
文件可以用于 任何 项目或编程语言。
该模块可以从 Elixir
和 JavaScript
(Node.js
、TypeScript
等)中使用。
(如果你想在其他语言中使用它,请告诉我们)
如何? #
你可以通过以下两种方式使用此项目:
A. 直接使用 quotes.json
名言列表(用于任何目的)。
B. 使用模块返回随机名言;以下为示例代码。
Flutter
#
安装 #
首先确保你已经在 Flutter 项目中添加了 quotesy
包。运行以下命令来添加依赖:
dependencies:
quotesy: ^1.0.0
然后运行以下命令以获取包:
flutter pub get
使用示例 #
以下是一个完整的 Flutter 应用程序示例,展示如何在应用中显示随机名言。
创建一个新的 Flutter 项目,并在主文件中实现以下代码:
// main.dart
import 'package:flutter/material.dart';
import 'package:quotesy/quotesy.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: RandomQuotePage(),
);
}
}
class RandomQuotePage extends StatefulWidget {
@override
_RandomQuotePageState createState() => _RandomQuotePageState();
}
class _RandomQuotePageState extends State<RandomQuotePage> {
Map<String, dynamic> _quote = {};
Future<void> _fetchRandomQuote() async {
final randomQuote = await Quotes.random();
setState(() {
_quote = randomQuote;
});
}
@override
void initState() {
super.initState();
_fetchRandomQuote();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('随机名言'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (_quote.isNotEmpty)
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
'"${_quote["text"]}"',
style: TextStyle(fontSize: 18),
textAlign: TextAlign.center,
),
),
if (_quote.isNotEmpty)
Text(
'- ${_quote["author"]} -',
style: TextStyle(fontSize: 14),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _fetchRandomQuote,
child: Text('获取新名言'),
),
],
),
),
);
}
}
说明
- 导入包:我们使用了
quotesy
包来获取随机名言。 - 随机名言获取:在
_fetchRandomQuote
函数中,通过Quotes.random()
获取一条随机名言,并更新状态。 - UI展示:使用
Text
小部件来显示名言和作者,按钮点击后会重新获取新的名言。
效果图
运行上述代码后,应用程序将显示一条随机名言,并在点击按钮时刷新名言。
更多功能 #
除了随机名言外,还可以根据特定作者获取名言,或者通过标签筛选名言。例如:
// 获取特定作者的名言
final authorQuotesArray = await Quotes.byAuthor("William Shakespeare");
// 获取带有指定标签的名言
final taggedQuotes = await Quotes.randomByTag("inspiration");
更多关于Flutter引用名言插件quotesy的功能使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter引用名言插件quotesy的功能使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
quotesy
是一个用于 Flutter 的插件,它可以帮助你在应用中轻松地引用名言。这个插件提供了多种功能,包括获取随机名言、按作者或类别筛选名言等。以下是如何在 Flutter 项目中使用 quotesy
插件的详细步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 quotesy
插件的依赖。
dependencies:
flutter:
sdk: flutter
quotesy: ^1.0.0 # 请检查最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入包
在你的 Dart 文件中导入 quotesy
包。
import 'package:quotesy/quotesy.dart';
3. 使用 quotesy
获取名言
quotesy
提供了多种方法来获取名言。以下是一些常见的用法:
获取随机名言
String randomQuote = Quotesy.getRandomQuote();
print(randomQuote);
获取特定作者的名言
List<String> quotesByAuthor = Quotesy.getQuotesByAuthor('Albert Einstein');
quotesByAuthor.forEach((quote) => print(quote));
获取特定类别的名言
List<String> quotesByCategory = Quotesy.getQuotesByCategory('motivational');
quotesByCategory.forEach((quote) => print(quote));
获取所有名言
List<String> allQuotes = Quotesy.getAllQuotes();
allQuotes.forEach((quote) => print(quote));
4. 在 Flutter 应用中显示名言
你可以将获取到的名言显示在 Flutter 应用的 UI 中。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:quotesy/quotesy.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: QuoteScreen(),
);
}
}
class QuoteScreen extends StatefulWidget {
[@override](/user/override)
_QuoteScreenState createState() => _QuoteScreenState();
}
class _QuoteScreenState extends State<QuoteScreen> {
String _quote = '';
void _getRandomQuote() {
setState(() {
_quote = Quotesy.getRandomQuote();
});
}
[@override](/user/override)
void initState() {
super.initState();
_getRandomQuote();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Random Quote'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
_quote,
style: TextStyle(fontSize: 20, fontStyle: FontStyle.italic),
textAlign: TextAlign.center,
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _getRandomQuote,
child: Text('Get Another Quote'),
),
],
),
),
);
}
}