Flutter高级动画进度指示器插件nw_advance_animated_progress_indicator的使用

本文将介绍如何在Flutter项目中使用nw_advance_animated_progress_indicator插件来创建高级动画进度指示器。该插件支持线性和圆形两种类型的进度指示器,并且可以通过简单的配置实现流畅的动画效果。


Flutter AnimatedProgressIndicator

这个基于Flutter的动画小部件包旨在以响应式风格展示动画进度指示器。它同时支持圆形和线性进度条。


插件链接

插件地址:
https://pub.dev/packages/nw_advance_animated_progress_indicator


安装插件

pubspec.yaml文件中添加以下依赖:

dependencies:
  nw_advance_animated_progress_indicator: ^版本号

然后运行以下命令安装插件:

flutter packages get

进入示例目录并运行应用:

cd example
flutter clean
flutter run

热重载应用以重新播放动画:

Hot restart app with "R"

要运行完整的示例应用:

cd example
mv lib/main.dart tmp && mv lib/main.dart.bk lib/main.dart && mv tmp lib/main.dart.bk
flutter clean
flutter run

开始使用

为了使用此插件,请先导入:

import 'package:nw_advance_animated_progress_indicator/nw_advance_animated_progress_indicator.dart';

基本实现代码如下:

Container(
  alignment: Alignment.center,
  margin: const EdgeInsets.all(10),
  child: AnimatedLinearProgressIndicator(
    percentage: _percentage, // 当前进度值
    animationDuration: const Duration(seconds: 1), // 动画持续时间
    label: 'Dart', // 显示的标签
  ),
)

示例代码

以下是一个完整的示例代码,展示了如何在Flutter应用中使用nw_advance_animated_progress_indicator插件。

文件:example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:nw_advance_animated_progress_indicator/nw_advance_animated_progress_indicator.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // 应用根组件
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Animated Progress Indicator',
      darkTheme: ThemeData.dark().copyWith(),
      themeMode: ThemeMode.dark,
      home: const MyHomePage(title: 'Animated Progress Indicator'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  double _percentage = 0.0;

  // 增加进度
  void _incrementPercentage() {
    setState(() {
      _percentage = _percentage + 0.1;
    });
  }

  // 减少进度
  void _decrementPercentage() {
    setState(() {
      _percentage = _percentage - 0.1;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Column(
        children: [
          // 圆形进度条
          Container(
            alignment: Alignment.center,
            margin: const EdgeInsets.all(10),
            child: AnimatedCircularProgressIndicator(
              percentage: _percentage, // 当前进度值
              animationDuration: const Duration(seconds: 1), // 动画持续时间
            ),
          ),
          const SizedBox(height: 20), // 空白间距
          // 线性进度条
          Container(
            alignment: Alignment.center,
            margin: const EdgeInsets.all(10),
            child: AnimatedLinearProgressIndicator(
              percentage: _percentage, // 当前进度值
              animationDuration: const Duration(seconds: 1), // 动画持续时间
              label: 'Dart', // 显示的标签
            ),
          ),
        ],
      ),
      floatingActionButton: Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          FloatingActionButton(
            onPressed: _incrementPercentage,
            tooltip: 'Increment',
            child: const Icon(Icons.add),
          ),
          const SizedBox(height: 20),
          FloatingActionButton(
            onPressed: _decrementPercentage,
            tooltip: 'Decrement',
            child: const Icon(Icons.remove),
          ),
        ],
      ),
    );
  }
}

对象定义

以下是AnimatedLinearProgressIndicatorAnimatedCircularProgressIndicator的构造函数定义:

// 线性进度条
AnimatedLinearProgressIndicator({
  Key? key,
  required this.percentage,
  required this.label,
  this.percentageTextStyle,
  this.labelStyle,
  this.animationDuration,
  this.indicatorColor,
  this.indicatorBackgroundColor,
}) : super(key: key);

// 圆形进度条
const AnimatedCircularProgressIndicator({
  Key? key,
  required this.percentage,
  this.animationDuration,
  this.percentageTextStyle,
  this.indicatorColor,
  this.indicatorBackgroundColor,
}) : super(key: key);

更多关于Flutter高级动画进度指示器插件nw_advance_animated_progress_indicator的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter高级动画进度指示器插件nw_advance_animated_progress_indicator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


nw_advance_animated_progress_indicator 是一个高级的 Flutter 动画进度指示器插件,它提供了丰富的动画效果和自定义选项,可以帮助你创建更加动态和吸引人的进度指示器。以下是该插件的基本使用方法和一些常见的配置选项。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 nw_advance_animated_progress_indicator 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  nw_advance_animated_progress_indicator: ^最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的 Dart 文件中导入插件:

import 'package:nw_advance_animated_progress_indicator/nw_advance_animated_progress_indicator.dart';

3. 基本使用

你可以使用 NWAdvanceAnimatedProgressIndicator 小部件来创建一个动画进度指示器。以下是一个简单的例子:

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  double _progress = 0.5;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Animated Progress Indicator'),
      ),
      body: Center(
        child: NWAdvanceAnimatedProgressIndicator(
          value: _progress,
          backgroundColor: Colors.grey[300],
          valueColor: AlwaysStoppedAnimation<Color>(Colors.blue),
          animationDuration: Duration(seconds: 2),
        ),
      ),
    );
  }
}

4. 配置选项

NWAdvanceAnimatedProgressIndicator 提供了许多配置选项,以下是一些常见的选项:

  • value: 当前进度值,范围为 0.01.0
  • backgroundColor: 进度指示器的背景颜色。
  • valueColor: 进度条的颜色,通常使用 AlwaysStoppedAnimation 来指定一个固定的颜色,或者使用 ColorTween 来创建颜色渐变效果。
  • animationDuration: 动画的持续时间。
  • strokeWidth: 进度条的宽度。
  • circular: 是否使用圆形进度条(默认为 false,即线性进度条)。
  • radius: 圆形进度条的半径(仅当 circulartrue 时有效)。

5. 自定义动画

你可以通过 valueColor 属性来创建自定义的动画效果。例如,使用 ColorTween 来创建一个颜色渐变的进度条:

NWAdvanceAnimatedProgressIndicator(
  value: _progress,
  backgroundColor: Colors.grey[300],
  valueColor: ColorTween(begin: Colors.red, end: Colors.green).animate(CurvedAnimation(
    parent: AlwaysStoppedAnimation(_progress),
    curve: Curves.easeInOut,
  )),
  animationDuration: Duration(seconds: 2),
);

6. 动态更新进度

你可以通过 setState 方法来动态更新进度值。例如,使用一个按钮来增加进度:

FloatingActionButton(
  onPressed: () {
    setState(() {
      _progress += 0.1;
      if (_progress > 1.0) {
        _progress = 0.0;
      }
    });
  },
  child: Icon(Icons.add),
),

7. 圆形进度条

如果你想使用圆形进度条,可以将 circular 属性设置为 true,并指定 radius

NWAdvanceAnimatedProgressIndicator(
  value: _progress,
  backgroundColor: Colors.grey[300],
  valueColor: AlwaysStoppedAnimation<Color>(Colors.blue),
  animationDuration: Duration(seconds: 2),
  circular: true,
  radius: 50.0,
);
回到顶部