Flutter圆形进度条插件dashed_circular_progress_bar的使用

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

Flutter圆形进度条插件dashed_circular_progress_bar的使用

简介

Dashed circular progress bar 是一个开源的Flutter包,用于在Flutter应用程序中创建带有虚线效果的圆形进度条。它提供了多种自定义选项,可以轻松地集成到你的项目中。

版本和兼容性

  • License: MIT License
  • Version: 0.0.6
  • Flutter: 3.13.5
  • Dart: 3.1.2

安装

要在你的Flutter项目中使用dashed_circular_progress_bar,你需要先将其添加到pubspec.yaml文件的依赖项中:

dependencies:
  dashed_circular_progress_bar: ^0.0.6

然后,在需要使用的Dart文件中导入该包:

import 'package:dashed_circular_progress_bar/dashed_circular_progress_bar.dart';

基本示例

示例1 - 简单进度条

要创建一个简单的圆形进度条,首先需要定义一个ValueNotifier来跟踪进度值的变化:

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

然后将它添加到Widget中:

DashedCircularProgressBar.aspectRatio(
  aspectRatio: 1, // 宽高比
  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
        ),
      ),
    ),
  ),
)

示例2 - 虚线背景进度条

此示例展示了如何创建具有虚线背景的进度条:

DashedCircularProgressBar.aspectRatio(
  aspectRatio: 2, // 宽高比
  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,
)

示例3 - 更复杂的进度条

这个例子展示了更复杂的进度条,包括文本和其他样式:

DashedCircularProgressBar.aspectRatio(
  aspectRatio: 1, // 宽高比
  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
            ),
          ),
        ],
      )
    ),
  ),
)

示例4 - 虚线进度条

你可以使用指定的尺寸而不是宽高比来创建进度条:

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
  ),
)

示例5 - 圆心对齐

通过改变圆心位置,你可以指定进度条的位置:

DashedCircularProgressBar.aspectRatio(
  aspectRatio: 1, // 宽高比
  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
)

参数描述

以下是DashedCircularProgressBar的主要参数及其默认值和说明:

参数 默认值 描述
width 0 进度条宽度
height 0 进度条高度
aspectRatio 0 宽高比
progress 0 当前进度值
maxProgress 100 最大进度值
startAngle 0 弧形起始角度
sweepAngle 360 弧形扫过的角度
foregroundStrokeWidth 2 前景弧形厚度
backgroundStrokeWidth 2 背景弧形厚度
foregroundColor Colors.blue 前景弧形颜色
backgroundColor Colors.white 背景弧形颜色
corners StrokeCap.round 弧形末端样式
foregroundGapSize 0 前景弧形间隙大小
foregroundDashSize 0 前景弧形虚线大小
backgroundGapSize 0 背景弧形间隙大小
backgroundDashSize 0 背景弧形虚线大小
seekSize 0 进度条seek大小
seekColor Colors.blue 进度条seek颜色
circleCenterAlignment Alignment.center 进度条中心对齐方式
animation false 是否启用动画
animationDuration Duration(seconds: 1) 动画持续时间
animationCurve Curves.easeOut 动画曲线类型
onAnimationEnd null 动画结束时调用的回调函数
ltr true 绘制方向(从右到左或反之)
child null 放置在进度条上的子Widget
valueNotifier null 动画值通知器

通过这些参数,你可以灵活地调整进度条的外观和行为,以满足你的应用需求。


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

1 回复

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


当然,下面是一个关于如何在Flutter中使用dashed_circular_progress_bar插件来创建圆形进度条的示例代码。

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

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

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

接下来,你可以在你的Flutter项目中使用这个插件。以下是一个完整的示例,展示了如何使用dashed_circular_progress_bar来创建一个简单的圆形进度条:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Dashed Circular Progress Bar Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Dashed Circular Progress Bar Demo'),
        ),
        body: Center(
          child: DashedCircularProgressBar(
            // 进度值,范围为0到1
            progress: 0.75,
            // 进度条的颜色
            strokeColor: Colors.blue,
            // 进度条未填充部分的颜色
            backgroundColor: Colors.grey.withOpacity(0.2),
            // 进度条宽度
            strokeWidth: 8.0,
            // 进度条总长度(半径)
            radius: 120.0,
            // 是否显示中心文本
            showCenterText: true,
            // 中心文本
            centerText: '75%',
            // 中心文本样式
            centerTextStyle: TextStyle(
              fontSize: 24,
              fontWeight: FontWeight.bold,
              color: Colors.black,
            ),
            // 进度条动画持续时间
            animationDuration: Duration(seconds: 1),
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,它包含一个DashedCircularProgressBar组件。你可以通过调整progress属性来改变进度条的进度值,通过strokeColorbackgroundColor来设置进度条的颜色,通过strokeWidthradius来调整进度条的宽度和大小。

showCenterText属性用于控制是否在进度条中心显示文本,centerText用于设置中心文本内容,centerTextStyle用于设置中心文本的样式。

animationDuration属性用于设置进度条动画的持续时间,当你更新进度值时,进度条会以这个持续时间来进行动画过渡。

这个示例展示了dashed_circular_progress_bar插件的基本用法,你可以根据需要进一步自定义和扩展这个示例。

回到顶部