Flutter圆形进度指示器插件circular_indicator的使用

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

Flutter圆形进度指示器插件circular_indicator的使用

在本篇教程中,我们将详细介绍如何使用circular_indicator插件来创建一个动态的圆形进度指示器。该插件允许你自定义进度条的颜色、宽度、高度等属性,并且可以添加动画效果。

Demo

下图展示了一个动态更新的圆形进度指示器:

sample gif

使用方法

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

dependencies:
  circular_indicator: ^1.0.0

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

接下来,我们来看一个完整的示例代码:

import 'dart:async';

import 'package:circular_indicator/circular_indicator_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';

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

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  double _value = 0;
  Timer? _timer;

  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Indicator'),
        ),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            SizedBox(
              child: CircularIndicatorWidget(
                width: 200,
                height: 200,
                current: _value,
                maxStep: 100,
                widthLine: 2.5,
                heightLine: 20,
                curve: Curves.easeInOutCirc,
                gradientColor: const LinearGradient(
                  begin: Alignment.topLeft,
                  end: Alignment.bottomRight,
                  colors: [Colors.cyan, Colors.orangeAccent],
                ),
                child: Container(
                  color: Colors.teal.shade200,
                  child: Center(
                      child: Text(
                    _value.toStringAsFixed(0),
                    style: const TextStyle(
                      color: Colors.teal,
                      fontSize: 50,
                      fontWeight: FontWeight.w700,
                    ),
                  )),
                ),
              ),
            ),
            const SizedBox(
              height: 25,
            ),
            Slider(
              min: 0,
              max: 100,
              value: _value,
              onChanged: (value) {
                setState(() {
                  _value = value;
                });
              },
            ),
          ],
        ),
        floatingActionButton: FloatingActionButton(
          child: const Icon(Icons.access_alarm),
          onPressed: () {
            if (_timer != null) return;
            _timer = Timer.periodic(const Duration(seconds: 3), (timer) {
              setState(() {
                if (_value == 100) {
                  _value = 0;
                } else {
                  _value += 25;
                }
              });
            });
          },
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter中使用circular_indicator插件来创建圆形进度指示器的示例代码。需要注意的是,circular_indicator并不是Flutter官方的一个核心组件,而是一个可能存在于第三方包中的组件。通常,Flutter中创建圆形进度指示器会使用官方的CircularProgressIndicator。不过,为了符合你的要求,这里我假设有一个第三方包提供了CircularIndicator组件,并且展示如何使用它(实际上,你可能需要找到一个具体的第三方包,并参考其文档)。

假设有一个第三方包名为circular_indicator_package(注意:这只是一个假设的包名,你需要根据实际情况替换为真实的包名),并且它提供了一个CircularIndicator组件。以下是如何在Flutter项目中使用这个组件的示例代码:

  1. 添加依赖: 首先,在你的pubspec.yaml文件中添加这个第三方包的依赖。

    dependencies:
      flutter:
        sdk: flutter
      circular_indicator_package: ^x.y.z  # 替换为实际的版本号
    

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

  2. 导入包: 在你的Dart文件中导入这个包。

    import 'package:circular_indicator_package/circular_indicator_package.dart';
    

    注意:实际的导入路径可能有所不同,你需要参考该第三方包的文档。

  3. 使用CircularIndicator: 下面是一个使用CircularIndicator的简单示例。

    import 'package:flutter/material.dart';
    import 'package:circular_indicator_package/circular_indicator_package.dart';  // 假设的导入路径
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Circular Indicator Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: Scaffold(
            appBar: AppBar(
              title: Text('Circular Indicator Demo'),
            ),
            body: Center(
              child: CircularProgressIndicatorDemo(),
            ),
          ),
        );
      }
    }
    
    class CircularProgressIndicatorDemo extends StatefulWidget {
      @override
      _CircularProgressIndicatorDemoState createState() => _CircularProgressIndicatorDemoState();
    }
    
    class _CircularProgressIndicatorDemoState extends State<CircularProgressIndicatorDemo> with SingleTickerProviderStateMixin {
      double _progress = 0.0;
    
      @override
      void initState() {
        super.initState();
        _startProgress();
      }
    
      void _startProgress() {
        Timer.periodic(Duration(milliseconds: 100), (Timer timer) {
          setState(() {
            if (_progress < 1.0) {
              _progress += 0.01;
            } else {
              timer.cancel();
            }
          });
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return Container(
          width: 200,
          height: 200,
          child: CircularIndicator(  // 假设的组件名
            value: _progress,
            backgroundColor: Colors.grey[200],
            foregroundColor: Colors.blue,
            strokeWidth: 5.0,
          ),
        );
      }
    }
    

    请注意,上面的代码示例中有几个关键点:

    • CircularIndicator组件的假设使用,包括valuebackgroundColorforegroundColorstrokeWidth等属性。
    • 使用Timer.periodic来模拟进度更新。
    • SingleTickerProviderStateMixin用于管理状态中的动画或计时器。

由于circular_indicator不是一个标准的Flutter组件,你需要根据实际的第三方包文档来调整代码。如果找不到名为circular_indicator_package的包,请搜索Flutter社区中提供的圆形进度指示器插件,并参考其官方文档进行实现。通常,Flutter社区中的插件文档会提供详细的安装和使用指南。

回到顶部