Flutter高级进度条控制插件flutter_advanced_seekbar的使用

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

Flutter高级进度条控制插件flutter_advanced_seekbar的使用

插件介绍

flutter_advanced_seekbar 是一个用于Flutter应用中的高级进度条控制插件,支持水平和垂直方向的进度条,并且提供了丰富的自定义选项。

以下是插件演示图:

Horizontal Vertical

安装方法

添加到 pubspec.yaml

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

dependencies:
  flutter_advanced_seekbar: $latest_version

请将 $latest_version 替换为插件的最新版本号。

使用方法

以下是一个完整的示例代码,展示了如何使用 flutter_advanced_seekbar 插件:

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

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

  [@override](/user/override)
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  String state1 = "";
  int progress1 = 0;

  String state2 = "";
  int progress2 = 30;

  String state3 = "";
  int progress3 = 0;

  String state4 = "";
  int progress4 = 0;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Flutter Advanced Seek Bar"),
      ),
      body: Column(
        children: [
          SizedBox(height: 50),
          Container(
            child: Center(
              child: Text("demo1: 状态: $state1: $progress1"),
            ),
          ),
          Container(
            height: 50,
            padding: EdgeInsets.symmetric(horizontal: 15, vertical: 10),
            child: AdvancedSeekBar(
              Color(0xffeeeff3), // 背景条的颜色
              10, // 圆点默认大小
              Colors.blue, // 圆点的颜色
              fillProgress: true, // 完成的进度是否标记为圆点的颜色
              seekBarStarted: () { // 开始seek回调
                setState(() {
                  state1 = "开始";
                });
              },
              seekBarProgress: (v) { // seek进度回调
                setState(() {
                  state1 = "正在拖动";
                  progress1 = v;
                });
              },
              seekBarFinished: (v) { // 完成seek回调
                setState(() {
                  state1 = "完成";
                  progress1 = v;
                });
              },
            ),
          ),
          SizedBox(height: 50),
          Container(
            child: Center(
              child: Text("demo2: 状态: $state2: $progress2"),
            ),
          ),
          Container(
            height: 50,
            padding: EdgeInsets.symmetric(horizontal: 15, vertical: 10),
            child: AdvancedSeekBar(
              Color(0xffeeeff3),
              10,
              Colors.blue,
              scaleWhileDrag: false, // 圆点在拖动时是否放大
              defaultProgress: 30, // 原点默认指向
              seekBarStarted: () {
                setState(() {
                  state2 = "开始";
                });
              },
              seekBarProgress: (v) {
                setState(() {
                  state2 = "正在拖动";
                  progress2 = v;
                });
              },
              seekBarFinished: (v) {
                setState(() {
                  state2 = "完成";
                  progress2 = v;
                });
              },
            ),
          ),
          SizedBox(height: 50),
          Container(
            child: Center(
              child: Text("demo3: 状态: $state3: $progress3"),
            ),
          ),
          Container(
            height: 50,
            padding: EdgeInsets.symmetric(horizontal: 15, vertical: 10),
            child: AdvancedSeekBar(
              Color(0xffeeeff3),
              10,
              Colors.blue,
              lineHeight: 5, // 背景条的高度
              defaultProgress: 50,
              scaleWhileDrag: true,
              percentSplit: 10, // 是否需要拆分进度
              percentSplitColor: Colors.green, // 拆分条的颜色
              percentSplitWidth: 1, // 拆分条的宽度
              fillProgress: true,
              autoJump2Split: false, // 如果拆分 seek后是否必须到拆分点上
              seekBarStarted: () {
                setState(() {
                  state3 = "开始";
                });
              },
              seekBarProgress: (v) {
                setState(() {
                  state3 = "正在拖动";
                  progress3 = v;
                });
              },
              seekBarFinished: (v) {
                setState(() {
                  state3 = "完成";
                  progress3 = v;
                });
              },
            ),
          ),
          SizedBox(height: 50),
          Container(
            child: Center(
              child: Text("demo4: 状态: $state4: $progress4"),
            ),
          ),
          Container(
            height: 50,
            padding: EdgeInsets.symmetric(horizontal: 15, vertical: 10),
            child: AdvancedSeekBar(
              Color(0xffeeeff3),
              10,
              Colors.blue,
              lineHeight: 5,
              defaultProgress: 50,
              scaleWhileDrag: true,
              percentSplit: 10,
              percentSplitColor: Colors.green,
              percentSplitWidth: 1,
              seekBarStarted: () {
                setState(() {
                  state4 = "开始";
                });
              },
              seekBarProgress: (v) {
                setState(() {
                  state4 = "正在拖动";
                  progress4 = v;
                });
              },
              seekBarFinished: (v) {
                setState(() {
                  state4 = "完成";
                  progress4 = v;
                });
              },
            ),
          ),
        ],
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何使用flutter_advanced_seekbar插件的详细代码示例。这个插件允许你创建一个高级的进度条(seekbar),并且提供了丰富的自定义选项。

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

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

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

接下来,在你的Flutter应用中,你可以按照以下步骤使用flutter_advanced_seekbar

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Advanced SeekBar Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SeekBarScreen(),
    );
  }
}

class SeekBarScreen extends StatefulWidget {
  @override
  _SeekBarScreenState createState() => _SeekBarScreenState();
}

class _SeekBarScreenState extends State<SeekBarScreen> {
  double _currentValue = 0.0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Advanced SeekBar Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Current Value: $_currentValue',
              style: TextStyle(fontSize: 24),
            ),
            SizedBox(height: 20),
            AdvancedSeekBar(
              minimum: 0.0,
              maximum: 100.0,
              initialValue: _currentValue,
              onValueChanged: (value) {
                setState(() {
                  _currentValue = value;
                });
              },
              barWidth: 30.0,
              progressColor: Colors.blue,
              bufferColor: Colors.grey[300]!,
              backgroundColor: Colors.grey[200]!,
              thumb: Container(
                width: 20.0,
                height: 20.0,
                decoration: BoxDecoration(
                  shape: BoxShape.circle,
                  color: Colors.blue,
                ),
              ),
              thumbBorderRadius: BorderRadius.circular(10.0),
              tickMarks: TickMarks(
                enabled: true,
                count: 11, // For 10 intervals between 0 and 100
                color: Colors.black,
                size: 4.0,
              ),
              labels: Labels(
                enabled: true,
                count: 11,
                activeLabelStyle: TextStyle(color: Colors.blue),
                inactiveLabelStyle: TextStyle(color: Colors.grey),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

代码解释

  1. 依赖添加:在pubspec.yaml文件中添加flutter_advanced_seekbar依赖。
  2. UI结构:使用Scaffold来构建应用的基本结构,包含一个AppBar和一个Column
  3. 显示当前值:在Column中,我们首先显示当前的进度值。
  4. AdvancedSeekBar
    • minimummaximum定义了进度条的最小值和最大值。
    • initialValue设置了进度条的初始值。
    • onValueChanged是一个回调函数,当进度条的值改变时,它会更新_currentValue
    • barWidth定义了进度条的宽度。
    • progressColorbufferColorbackgroundColor分别定义了进度、缓冲区和背景的颜色。
    • thumb定义了滑块(拇指)的样式。
    • thumbBorderRadius定义了滑块(拇指)的圆角半径。
    • tickMarkslabels分别用于显示刻度线和标签。

这个示例展示了如何使用flutter_advanced_seekbar创建一个基本的进度条,并自定义其外观和行为。根据你的需求,你可以进一步调整这些参数,以实现更复杂的功能和样式。

回到顶部