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

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

在本教程中,我们将展示如何使用circular_progress_bar插件来创建一个圆形进度条。此插件可以轻松地添加到您的Flutter项目中,并且可以通过配置不同的属性来自定义进度条的外观和行为。

插件属性说明

下表列出了circular_progress_bar插件的主要属性及其描述:

属性名称 描述 是否必需 默认值
width 圆形进度条宽度 NAN
height 圆形进度条高度 NAN
textStyle 百分比文本样式 常量 TextStyle(color: Colors.black, fontSize: 26, fontWeight: FontWeight.bold)
percentageVisibility 百分比文本可见性
duration 动画运行时长 常量 Duration(milliseconds: 700)
strokeCap 完成进度的线帽样式 StrokeCap.round
curve 动画曲线 Curves.linear
radius 圆形进度条半径 NAN
percentage 圆形进度条百分比 NAN
color 完成进度的颜色 NAN
percentagePrefix 百分比文本前缀 (String)’’
percentageSuffix 百分比文本后缀 (String)’’
hasDecimalPoint 百分比文本是否有小数点

示例代码

以下是一个完整的示例代码,展示了如何使用circular_progress_bar插件创建一个圆形进度条,并通过点击按钮生成随机数更新进度条的百分比。

import 'dart:math';

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

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

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> with SingleTickerProviderStateMixin {
  @override
  void initState() {
    super.initState();
  }

  // 定义进度百分比变量
  double _percentage = 0;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            // 创建圆形进度条
            CircularProgressBar(
              textStyle: const TextStyle(
                  fontWeight: FontWeight.bold,
                  color: Colors.blue,
                  fontSize: 14),
              width: 1000,
              height: 300,
              duration: const Duration(milliseconds: 1000),
              curve: Curves.elasticInOut,
              radius: 100,
              percentage: _percentage,
              color: Colors.amber,
              percentagePrefix: "PREFIX",
              percentageSuffix: "SUFFIX ",
              hasDecimalPoint: true,
            ),
            // 创建一个按钮用于生成随机数并更新进度条
            TextButton(
                onPressed: () {
                  Random random = Random();
                  var randomNumber = random.nextInt(100);
                  setState(() {
                    _percentage = randomNumber.toDouble();
                  });
                },
                child: const Text('生成随机数 0 ~ 100')),
          ],
        ),
      ),
    );
  }
}

代码解释

  1. 导入必要的包

    import 'dart:math';
    import 'package:flutter/material.dart';
    import 'package:circular_progress_bar/circular_progress_bar.dart';
    
  2. 定义主应用类

    class MyApp extends StatefulWidget {
      const MyApp({Key? key}) : super(key: key);
    
      @override
      State<MyApp> createState() => _MyAppState();
    }
    
  3. 定义状态类

    class _MyAppState extends State<MyApp> with SingleTickerProviderStateMixin {
      double _percentage = 0;
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            body: Column(
              crossAxisAlignment: CrossAxisAlignment.center,
              children: [
                CircularProgressBar(
                  textStyle: const TextStyle(
                      fontWeight: FontWeight.bold,
                      color: Colors.blue,
                      fontSize: 14),
                  width: 1000,
                  height: 300,
                  duration: const Duration(milliseconds: 1000),
                  curve: Curves.elasticInOut,
                  radius: 100,
                  percentage: _percentage,
                  color: Colors.amber,
                  percentagePrefix: "PREFIX",
                  percentageSuffix: "SUFFIX ",
                  hasDecimalPoint: true,
                ),
                TextButton(
                    onPressed: () {
                      Random random = Random();
                      var randomNumber = random.nextInt(100);
                      setState(() {
                        _percentage = randomNumber.toDouble();
                      });
                    },
                    child: const Text('生成随机数 0 ~ 100')),
              ],
            ),
          ),
        );
      }
    }
    

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

1 回复

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


当然,以下是如何在Flutter项目中使用circular_progress_bar插件的一个简单示例。这个插件可以帮助你轻松地在应用中实现一个圆形的进度条。

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

dependencies:
  flutter:
    sdk: flutter
  circular_progress_bar: ^1.0.0  # 请检查最新版本号并替换

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

接下来,在你的Dart文件中,你可以使用CircularProgressBar来创建一个圆形进度条。以下是一个完整的示例代码:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Circular Progress Bar Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Circular Progress Bar Demo'),
        ),
        body: Center(
          child: CircularProgressBar(
            progress: 0.75, // 设置进度值,范围从0到1
            backgroundColor: Colors.grey[200]!,
            progressColor: Colors.blue,
            width: 20.0,
            borderColor: Colors.blueAccent,
            borderWidth: 3.0,
            radius: 100.0,
            animationDuration: Duration(milliseconds: 800),
            child: Container(
              alignment: Alignment.center,
              child: Text(
                '75%',
                style: TextStyle(
                  fontSize: 24,
                  color: Colors.white,
                ),
              ),
            ),
          ),
        ),
      ),
    );
  }
}

在这个示例中:

  • CircularProgressBarprogress属性用于设置进度值,范围从0到1。在这个例子中,我们将其设置为0.75,表示75%的进度。
  • backgroundColor属性用于设置进度条背景的颜色。
  • progressColor属性用于设置进度条已填充部分的颜色。
  • width属性用于设置进度条的宽度。
  • borderColorborderWidth属性用于设置进度条边框的颜色和宽度。
  • radius属性用于设置进度条的半径。
  • animationDuration属性用于设置进度条动画的持续时间。
  • child属性允许你在进度条的中心放置一个子组件,例如一个显示当前进度的文本标签。

你可以根据需要调整这些属性来满足你的设计需求。希望这个示例对你有所帮助!

回到顶部