Flutter动画进度条插件animated_overflow_progress_bar的使用

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

Flutter动画进度条插件animated_overflow_progress_bar的使用

一个为Flutter应用程序设计的可自定义的动画进度条小部件,带有溢出指示功能。

特性

  • 进度变化时平滑动画
  • 可定制背景色、进度色和溢出色
  • 溢出指示带有可定制的条纹图案
  • 灵活的尺寸选项
  • 可定制的边框圆角

截图

开始使用

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

dependencies:
  animated_overflow_progress_bar: ^1.0.1

使用方法

import 'package:animated_overflow_progress_bar/animated_overflow_progress_bar.dart';

AnimatedOverflowProgressBar(
  total: 100,
  progress: 75,
  width: 300,
  height: 30,
  animationDuration: Duration(milliseconds: 500),
  backgroundColor: Colors.grey[200]!,
  progressColor: Colors.blue,
  overflowColor: Colors.grey[100]!,
  borderColor: Colors.black,
  borderRadius: BorderRadius.circular(15),
  overflowTheme: OverflowTheme(
    stripeColor: Colors.red,
    stripeWidth: 0.75,
    stripeSpacing: 5.0,
  ),
)

自定义边框圆角

你可以通过borderRadius属性来自定义进度条的边框圆角:

// 四个角都是圆角
borderRadius: BorderRadius.circular(15)

// 只有左侧是圆角
borderRadius: BorderRadius.only(
  topLeft: Radius.circular(15),
  bottomLeft: Radius.circular(15),
)

// 每个角都有不同的圆角半径
borderRadius: BorderRadius.only(
  topLeft: Radius.circular(10),
  topRight: Radius.circular(20),
  bottomLeft: Radius.circular(30),
  bottomRight: Radius.circular(40),
)

溢出指示

当进度超过总值时,该组件会自动显示带有可定制条纹图案的溢出部分。这使得超出限制的情况一目了然。

示例

为了更全面地了解如何使用此组件,可以查看本仓库中的example文件夹。它包含了一个完整的Flutter项目,展示了如何使用AnimatedOverflowProgressBar

要运行示例:

  1. 克隆此仓库
  2. 导航到example目录
  3. 运行flutter pub get
  4. 运行flutter run

完整示例

基础用法

这是一个简单的例子,展示如何使用AnimatedOverflowProgressBar

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

class ProgressBarDemo extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('进度条演示')),
      body: Center(
        child: AnimatedOverflowProgressBar(
          progress: 75,
          total: 100,
          width: 300,
          height: 30,
          backgroundColor: Colors.grey[200]!,
          progressColor: Colors.blue,
          overflowColor: Colors.red[100]!,
          borderColor: Colors.black,
          borderRadius: BorderRadius.circular(15),
          overflowTheme: OverflowTheme(
            stripeColor: Colors.red,
            stripeWidth: 0.75,
            stripeSpacing: 5.0,
          ),
        ),
      ),
    );
  }
}

这将生成一个类似于以下的进度条:

高级用法

你可以创建一个可交互的进度条,使其值发生变化:

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

class InteractiveProgressBarDemo extends StatefulWidget {
  [@override](/user/override)
  _InteractiveProgressBarDemoState createState() => _InteractiveProgressBarDemoState();
}

class _InteractiveProgressBarDemoState extends State<InteractiveProgressBarDemo> {
  double _progress = 50.0;
  final double _total = 100.0;

  void _incrementProgress() {
    setState(() {
      _progress += 10;
      if (_progress > 150) _progress = 0; // 如果值过高则重置
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('交互式进度条演示')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            AnimatedOverflowProgressBar(
              progress: _progress,
              total: _total,
              width: 300,
              height: 30,
              backgroundColor: Colors.grey[200]!,
              progressColor: Colors.blue,
              overflowColor: Colors.red[100]!,
              borderColor: Colors.black,
              borderRadius: BorderRadius.circular(15),
              overflowTheme: OverflowTheme(
                stripeColor: Colors.red,
                stripeWidth: 0.75,
                stripeSpacing: 5.0,
              ),
            ),
            SizedBox(height: 20),
            Text('进度: $_progress / $_total'),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementProgress,
        child: Icon(Icons.add),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何使用Flutter动画进度条插件animated_overflow_progress_bar的代码示例。这个插件允许你创建一个带有溢出动画效果的进度条。

首先,确保你已经在pubspec.yaml文件中添加了animated_overflow_progress_bar依赖:

dependencies:
  flutter:
    sdk: flutter
  animated_overflow_progress_bar: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter项目中使用AnimatedOverflowProgressBar组件。以下是一个完整的示例代码:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Animated Overflow Progress Bar Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin {
  double _progress = 0.0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Animated Overflow Progress Bar Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            AnimatedOverflowProgressBar(
              progress: _progress,
              borderRadius: 25.0,
              height: 20.0,
              width: MediaQuery.of(context).size.width * 0.8,
              backgroundColor: Colors.grey[300]!,
              overflowColor: Colors.blue,
              duration: Duration(seconds: 2),
            ),
            SizedBox(height: 20.0),
            ElevatedButton(
              onPressed: () {
                setState(() {
                  _progress += 0.1;
                  if (_progress >= 1.0) {
                    _progress = 0.0;
                  }
                });
              },
              child: Text('Increase Progress'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中:

  1. 我们创建了一个MyApp类,它包含了应用的主要配置。
  2. MyHomePage是一个有状态的组件,包含一个进度条和一个按钮。
  3. AnimatedOverflowProgressBar组件用于显示进度条,你可以通过progress属性设置进度值。
  4. borderRadius, height, width, backgroundColor, 和 overflowColor 属性用于自定义进度条的外观。
  5. duration属性定义了动画的持续时间。
  6. 按下按钮时,进度条的值会增加0.1,如果进度值达到或超过1.0,则重置为0.0。

这个示例展示了如何使用animated_overflow_progress_bar插件来创建一个简单的动画进度条,并且你可以根据需要进一步自定义和扩展这个示例。

回到顶部