Flutter命令行旋转动画插件cli_spin的使用
Flutter命令行旋转动画插件cli_spin的使用
cli_spin
是一个 Dart 包,通过在终端中显示精美的旋转加载动画来提升用户体验,适用于同步和异步操作。它提供了超过80种预定义的旋转动画,并允许用户自定义颜色、文本和动画帧。
特性
- 80+ 预定义的旋转动画,可通过
CliSpinners
访问。 - 使用
CliSpinnerColor
辅助类轻松更改旋转动画的颜色和/或文本颜色。 - 定义自己的字符集(帧)和间隔来自定义旋转动画。
- 自定义旋转动画文本(带有独立的前缀和后缀选项)。
- 启动/停止方法。
- 停止并保留旋转动画,带有自定义文本和符号。
- 提供预定义的
success
,fail
,warn
和info
方法(跨平台兼容)。
入门指南
要开始使用 cli_spin
,请确保您的项目已经配置好 Dart 环境,并且在 pubspec.yaml
文件中添加了对 cli_spin
的依赖。
dependencies:
cli_spin: ^1.0.0
然后运行 dart pub get
来安装包。
使用示例
下面是一个完整的示例demo,展示了如何使用 cli_spin
创建和控制旋转动画:
import 'dart:async';
import 'package:cli_spin/cli_spin.dart';
// Helper function to simplify Timer creation
Timer _setTimeout(void Function() fn, int interval) =>
Timer(Duration(milliseconds: interval), fn);
void main(List<String> args) async {
// Create two spinners with different configurations
final spinner2 = CliSpin(
text: 'Loading a little bit more data...',
spinner: CliSpinners.dots,
color: CliSpinnerColor.white);
final spinner1 = CliSpin(
text: 'Loading data...',
spinner: CliSpinners.dots2,
color: CliSpinnerColor.white);
// Start the first spinner
spinner1.start();
// After 1 second, mark the first spinner as successful and stop it
_setTimeout(() {
spinner1.success();
}, 1000);
// After another second, change the text of the first spinner and start it again
_setTimeout(() {
spinner1.text = 'Loading more data...';
spinner1.start();
}, 2000);
// After another second, mark the first spinner as successful and start the second spinner
_setTimeout(() {
spinner1.success();
spinner2.start();
}, 3000);
// Change the color and text of the second spinner after 4 seconds
_setTimeout(() {
spinner2.color = CliSpinnerColor.yellow;
spinner2.text =
'Yellow spinner with ${CliSpinnerColor.red.call('red text')}';
}, 4000);
// Change the color, indent, and text of the second spinner after 5 seconds
_setTimeout(() {
spinner2.color = CliSpinnerColor.green;
spinner2.indent = 2;
spinner2.text = 'Loading with indent';
}, 5000);
// Change the spinner type and text after 6 seconds
_setTimeout(() {
spinner2.indent = 0;
spinner2.spinner = CliSpinners.aesthetic;
spinner2.text = 'Loading with different spinners';
}, 6000);
// Add prefix text after 8 seconds
_setTimeout(() {
spinner2.prefixText = CliSpinnerColor.gray.call('[info]');
spinner2.spinner = CliSpinners.dots;
spinner2.text = 'Loading with prefix text';
}, 8000);
// Add suffix text after 10 seconds
_setTimeout(() {
spinner2.prefixText = '';
spinner2.suffixText = CliSpinnerColor.gray.call('[info]');
spinner2.text = 'Loading with suffix text';
}, 10000);
// Add both prefix and suffix text after 12 seconds
_setTimeout(() {
spinner2.prefixText = CliSpinnerColor.gray.call('[info]');
spinner2.suffixText = CliSpinnerColor.gray.call('[info]');
spinner2.text = 'Loading with prefix and suffix text';
}, 12000);
// Stop the spinner and persist with different text after 14 seconds
_setTimeout(() {
spinner2.stopAndPersist(
prefixText: '',
suffixText: '',
symbol: logSymbols.info,
text: 'Stopping with different text!',
);
}, 14000);
}
更多信息
cli_spin
受到 JavaScript 库 ora 的启发,旨在为 Dart 和 Flutter 提供类似的命令行旋转动画功能。
如果您有任何问题或需要进一步的帮助,请参考 GitHub 仓库 或者提交 Issues。
更多关于Flutter命令行旋转动画插件cli_spin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter命令行旋转动画插件cli_spin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何使用Flutter命令行旋转动画插件 cli_spin
的示例代码案例。这个插件可以帮助你在命令行中显示旋转动画,通常用于表示长时间运行的任务正在进行中。
首先,你需要确保已经安装了 cli_spin
插件。你可以通过以下命令将其添加到你的 Flutter 项目中:
dart pub add cli_spin
接下来,你可以在你的 Dart 代码中使用这个插件来显示旋转动画。下面是一个简单的示例,展示如何在命令行中运行一个旋转动画,直到某个任务完成。
import 'dart:async';
import 'package:cli_spin/cli_spin.dart';
void main() async {
// 创建一个 Spin 实例
final spin = Spin.defaultSpin();
// 定义一个模拟的长时间运行任务
Future<void> longRunningTask() async {
await Future.delayed(Duration(seconds: 5));
print("\nTask completed!");
}
// 启动旋转动画
print("Starting task...");
final subscription = spin.start(interval: Duration(milliseconds: 100));
// 并发运行长时间任务
await longRunningTask();
// 任务完成后停止旋转动画
subscription.cancel();
print("\nSpin stopped.");
}
在这个示例中:
- 我们首先导入了
cli_spin
插件。 - 创建了一个
Spin
实例,这里使用的是默认的旋转动画。 - 定义了一个模拟的长时间运行任务,该任务会延迟 5 秒。
- 打印开始任务的提示信息,并启动旋转动画。
spin.start(interval: Duration(milliseconds: 100))
方法启动动画,并返回一个StreamSubscription
对象,该对象用于后续停止动画。 - 并发运行长时间任务。由于
longRunningTask
是一个异步函数,所以主线程会继续运行,显示旋转动画。 - 任务完成后,通过调用
subscription.cancel()
方法停止旋转动画。 - 打印旋转动画停止的提示信息。
你可以根据实际需要调整动画的间隔时间、任务执行时间等参数。这个插件非常适合在命令行工具中提供视觉反馈,表明某个操作正在进行中。