Flutter命令行旋转动画插件cli_spin的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter命令行旋转动画插件cli_spin的使用

cli_spin 是一个 Dart 包,通过在终端中显示精美的旋转加载动画来提升用户体验,适用于同步和异步操作。它提供了超过80种预定义的旋转动画,并允许用户自定义颜色、文本和动画帧。

preview

特性

  • 80+ 预定义的旋转动画,可通过 CliSpinners 访问。
  • 使用 CliSpinnerColor 辅助类轻松更改旋转动画的颜色和/或文本颜色。
  • 定义自己的字符集(帧)和间隔来自定义旋转动画。
  • 自定义旋转动画文本(带有独立的前缀和后缀选项)。
  • 启动/停止方法。
  • 停止并保留旋转动画,带有自定义文本和符号。
  • 提供预定义的 success, fail, warninfo 方法(跨平台兼容)。

入门指南

要开始使用 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

1 回复

更多关于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.");
}

在这个示例中:

  1. 我们首先导入了 cli_spin 插件。
  2. 创建了一个 Spin 实例,这里使用的是默认的旋转动画。
  3. 定义了一个模拟的长时间运行任务,该任务会延迟 5 秒。
  4. 打印开始任务的提示信息,并启动旋转动画。spin.start(interval: Duration(milliseconds: 100)) 方法启动动画,并返回一个 StreamSubscription 对象,该对象用于后续停止动画。
  5. 并发运行长时间任务。由于 longRunningTask 是一个异步函数,所以主线程会继续运行,显示旋转动画。
  6. 任务完成后,通过调用 subscription.cancel() 方法停止旋转动画。
  7. 打印旋转动画停止的提示信息。

你可以根据实际需要调整动画的间隔时间、任务执行时间等参数。这个插件非常适合在命令行工具中提供视觉反馈,表明某个操作正在进行中。

回到顶部