搜索插件、代码仓与 APP 分类

dashed_circular_progress_bar 封面
插件详情v0.0.6

dashed_circular_progress_bar

虚线圆形进度条以圆形显示任务的进度,颜色、样式和形状均可自定义。

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
4470
喜欢数
117
Pub 分数
160

安装插件

flutter pub add dashed_circular_progress_bar

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个可自定义的虚线圆形进度条,用于 Flutter,以圆形格式直观地表示任务进度。它支持多种颜色、笔画样式和形状,非常适合用作加载指示器或应用中的进度跟踪。该控件轻量且兼容所有主要平台,包括 Android、iOS、Web、macOS、Windows 和 Linux。可以使用 pub 命令轻松集成,并可自定义以匹配应用主题。

适合场景

  • 加载指示器
  • 表单中的进度跟踪
  • 任务完成可视化
  • 自定义 UI 元素
  • 交互式仪表板

主要特点

  • 虚线描边样式
  • 可自定义的颜色和宽度
  • 可调节大小的圆形形状
  • 跨平台兼容性
  • 通过 pub 实现轻松集成
  • 支持动画

适合对象

  • 寻求视觉反馈的应用开发者
  • 想要独特进度指示器的设计人员
  • 需要跨平台组件的项目
  • 以UI为主的应用程序
  • 极简主义设计美学

使用建议

  • 仅限圆形布局
  • 无内置文本标签
  • 需要手动控制动画
  • 不适用于线性进度
  • 可能需要额外的样式以支持深色模式

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Dashed circular progress bar

Open source flutter package, Dashed circular progress bar for flutter apps.

Getting Started

Installing

Add this line to the pubspec.yaml file below the dependencies:

dependencies:
  dashed_circular_progress_bar: ^0.0.6

Now to use, import this package into the desired file as follows:

import 'package:dashed_circular_progress_bar/dashed_circular_progress_bar.dart';

Basic examples

Here are some simple examples you can use to create this package:

Example 1 - Simple progress bar
simple_example_gif

First of all, to access the amount of progress when doing animation, you need to define a ValueNotifier:

final ValueNotifier<double> _valueNotifier = ValueNotifier(0);

Then add it to the widget:

DashedCircularProgressBar.aspectRatio(
  aspectRatio: 1, // width ÷ height
  valueNotifier: _valueNotifier,
  progress: 478,
  maxProgress: 670,
  corners: StrokeCap.butt,
  foregroundColor: Colors.blue,
  backgroundColor: const Color(0xffeeeeee),
  foregroundStrokeWidth: 36,
  backgroundStrokeWidth: 36,
  animation: true,
  child: Center(
    child: ValueListenableBuilder(
      valueListenable: _valueNotifier,
      builder: (_, double value, __) => Text(
        '${value.toInt()}%',
        style: const TextStyle(
          color: Colors.black,
          fontWeight: FontWeight.w300,
          fontSize: 60
        ),
      ),
    ),
  ),
)
Example 2 - Dashed background progress bar
simple_example_gif
DashedCircularProgressBar.aspectRatio(
  aspectRatio: 2, // width ÷ height
  progress: 34,
  startAngle: 270,
  sweepAngle: 180,
  circleCenterAlignment: Alignment.bottomCenter,
  foregroundColor: Colors.black,
  backgroundColor: const Color(0xffeeeeee),
  foregroundStrokeWidth: 3,
  backgroundStrokeWidth: 2,
  backgroundGapSize: 2,
  backgroundDashSize: 1,
  seekColor: Colors.yellow,
  seekSize: 22,
  animation: true,
)
Example 3 - More complex progress bar
more_complex_example_gif
DashedCircularProgressBar.aspectRatio(
  aspectRatio: 1, // width ÷ height
  valueNotifier: _valueNotifier,
  progress: 37,
  startAngle: 225,
  sweepAngle: 270,
  foregroundColor: Colors.green,
  backgroundColor: const Color(0xffeeeeee),
  foregroundStrokeWidth: 15,
  backgroundStrokeWidth: 15,
  animation: true,
  seekSize: 6,
  seekColor: const Color(0xffeeeeee),
  child: Center(
    child: ValueListenableBuilder(
      valueListenable: _valueNotifier,
      builder: (_, double value, __) => Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          Text(
            '${value.toInt()}%',
            style: const TextStyle(
              color: Colors.black,
              fontWeight: FontWeight.w300,
              fontSize: 60
            ),
          ),
          Text(
            'Accuracy',
            style: const TextStyle(
              color: Color(0xffeeeeee),
              fontWeight: FontWeight.w400,
              fontSize: 16
            ),
          ),
        ],
      )
    ),
  ),
)
Example 4 - Dashed progress bar

You can also use the desired dimensions instead of aspect ratio.

dashed_example_gif
DashedCircularProgressBar.square(
  dimensions: 350,
  progress: 180,
  maxProgress: 360,
  startAngle: -27.5,
  foregroundColor: Colors.redAccent,
  backgroundColor: const Color(0xffeeeeee),
  foregroundStrokeWidth: 7,
  backgroundStrokeWidth: 7,
  foregroundGapSize: 5,
  foregroundDashSize: 55,
  backgroundGapSize: 5,
  backgroundDashSize: 55,
  animation: true,
  child: const Icon(
    Icons.favorite,
    color: Colors.redAccent,
    size: 126
  ),
)
Example 5 - Play with circle center alignment

By changing the center, you can specify the location of the progress bar.

play_with_circle_center_alignment_example.png

For example to make a progress bar in the shape of the first image (first row, first image from the left):

DashedCircularProgressBar.aspectRatio(
  aspectRatio: 1, // width / height
  progress: 60,
  startAngle: 90,
  sweepAngle: 90,
  corners: StrokeCap.butt,
  foregroundStrokeWidth: 7,
  backgroundStrokeWidth: 7,
  circleCenterAlignment: Alignment.topLeft,
  foregroundColor: Colors.white,
  backgroundColor: const Color(0x22000000),
  animation: true
)

Parameters description

Parameter Default Description
width
double
0 Progress bar width.
height
double
0 Progress bar height.
aspectRatio
double
0 Progress aspect ratio.
progress
double
0 Current value of progress bar.
maxProgress
double
100 Maximum value of progress.
startAngle
double
0 The starting angle of the arc.
sweepAngle
double
360 The sweep angle of the arc.
foregroundStrokeWidth
double
2 Foreground arc thickness.
backgroundStrokeWidth
double
2 Background arc thickness.
foregroundColor
Color
Colors.blue Foreground arc color.
backgroundColor
Color
Colors.white Background arc color.
corners
StrokeCap
StrokeCap.round Styles to use for arcs endings.
foregroundGapSize
double
0 Foreground arc gap size.
foregroundDashSize
double
0 Foreground arc dash size.
backgroundGapSize
double
0 Background arc gap size.
backgroundDashSize
double
0 Background arc dash size.
seekSize
double
0 Progress bar seek size.
seekColor
Color
Colors.blue Progress bar seek color.
circleCenterAlignment
Alignment
Alignment.center Align center of progress bar.
animation
bool
false Active progress bar animation.
animationDuration
Duration
Duration(seconds: 1) Progress bar animation duration.
animationCurve
Curve
Curves.easeOut Progress bar animation curve.
onAnimationEnd
void Function()?
null This function is called when animation ended.
ltr
bool
true Specifies how to draw arcs from right to left or vice versa.
child
Widget?
null This widget is placed on the progress bar.
valueNotifier
ValueNotifier?
null Animated value notifier.

所属分类

源码仓库

使用此插件的项目

暂无相关数据。