Flutter进度指示器插件liquid_progress_indicator_ns的使用

Flutter进度指示器插件liquid_progress_indicator_ns的使用

liquid_progress_indicator_ns 是一个用于 Flutter 应用的进度指示器插件。它提供了三种类型的进度指示器:液态圆形进度指示器(LiquidCircularProgressIndicator)、液态线性进度指示器(LiquidLinearProgressIndicator)和自定义形状进度指示器(LiquidCustomProgressIndicator)。这些进度指示器可以自定义颜色、边框、方向等属性。

特性

  • 液态圆形进度指示器
  • 液态线性进度指示器
  • 自定义形状进度指示器
  • 使用方式与 Flutter 自带的 ProgressIndicator 类似。
  • 可以自定义颜色、边框、方向等属性。

使用方法

首先,需要在项目中引入 liquid_progress_indicator_ns 包:

import 'package:liquid_progress_indicator_ns/liquid_progress_indicator.dart';
液态圆形进度指示器(LiquidCircularProgressIndicator)
LiquidCircularProgressIndicator(
  value: 0.25, // 默认值为 0.5。
  valueColor: AlwaysStoppedAnimation(Colors.pink), // 默认值为当前主题的强调色。
  backgroundColor: Colors.white, // 默认值为当前主题的背景色。
  borderColor: Colors.red,
  borderWidth: 5.0,
  direction: Axis.horizontal, // 液体移动的方向(Axis.vertical = 从下到上,Axis.horizontal = 从左到右)。默认值为 Axis.vertical。
  center: Text("Loading..."), // 中心文本。
);
液态线性进度指示器(LiquidLinearProgressIndicator)
LiquidLinearProgressIndicator(
  value: 0.25, // 默认值为 0.5。
  valueColor: AlwaysStoppedAnimation(Colors.pink), // 默认值为当前主题的强调色。
  backgroundColor: Colors.white, // 默认值为当前主题的背景色。
  borderColor: Colors.red,
  borderWidth: 5.0,
  borderRadius: 12.0,
  direction: Axis.vertical, // 液体移动的方向(Axis.vertical = 从下到上,Axis.horizontal = 从左到右)。默认值为 Axis.horizontal。
  center: Text("Loading..."), // 中心文本。
);
自定义形状进度指示器(LiquidCustomProgressIndicator)
LiquidCustomProgressIndicator(
  value: 0.2, // 默认值为 0.5。
  valueColor: AlwaysStoppedAnimation(Colors.pink), // 默认值为当前主题的强调色。
  backgroundColor: Colors.white, // 默认值为当前主题的背景色。
  direction: Axis.vertical, // 液体移动的方向(Axis.vertical = 从下到上,Axis.horizontal = 从左到右)。
  shapePath: _buildBoatPath(), // 一个 Path 对象用于绘制进度指示器的形状。进度指示器的大小由该路径的边界创建。
)

其中 _buildBoatPath() 函数需要自行实现,用于定义自定义形状的路径。

完整示例 Demo

以下是一个完整的 Flutter 应用示例,演示了如何使用 liquid_progress_indicator_ns 插件的不同类型的进度指示器。

import 'package:flutter/material.dart';

import 'liquid_circular_progress_indicator_page.dart';
import 'liquid_custom_progress_indicator_page.dart';
import 'liquid_linear_progress_indicator_page.dart';

void main() => runApp(MaterialApp(home: Example()));

class Example extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Liquid Progress Indicator Examples"),
      ),
      body: Padding(
        padding: const EdgeInsets.all(28.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            TextButton(
              child: Text("Circular"),
              style: ButtonStyle(
                  backgroundColor: MaterialStateProperty.resolveWith(
                      (states) => Colors.grey[300])),
              onPressed: () => Navigator.of(context).push(
                MaterialPageRoute(
                  builder: (_) => LiquidCircularProgressIndicatorPage(),
                ),
              ),
            ),
            TextButton(
              child: Text("Linear"),
              style: ButtonStyle(
                  backgroundColor: MaterialStateProperty.resolveWith(
                      (states) => Colors.grey[300])),
              onPressed: () => Navigator.of(context).push(
                MaterialPageRoute(
                  builder: (_) => LiquidLinearProgressIndicatorPage(),
                ),
              ),
            ),
            TextButton(
              child: Text("Custom"),
              style: ButtonStyle(
                  backgroundColor: MaterialStateProperty.resolveWith(
                      (states) => Colors.grey[300])),
              onPressed: () => Navigator.of(context).push(
                MaterialPageRoute(
                  builder: (_) => LiquidCustomProgressIndicatorPage(),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用liquid_progress_indicator_ns插件的一个示例代码案例。这个插件提供了一个非常漂亮的液态进度指示器。

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

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

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

接下来,在你的Flutter项目中,你可以像这样使用LiquidProgressIndicator

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Liquid Progress Indicator Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Liquid Progress Indicator Demo'),
        ),
        body: Center(
          child: LiquidProgressIndicatorDemo(),
        ),
      ),
    );
  }
}

class LiquidProgressIndicatorDemo extends StatefulWidget {
  @override
  _LiquidProgressIndicatorDemoState createState() => _LiquidProgressIndicatorDemoState();
}

class _LiquidProgressIndicatorDemoState extends State<LiquidProgressIndicatorDemo> with SingleTickerProviderStateMixin {
  double _progress = 0.0;

  @override
  void initState() {
    super.initState();
    // 模拟进度变化
    _startProgress();
  }

  void _startProgress() {
    Timer.periodic(Duration(milliseconds: 100), (timer) {
      setState(() {
        if (_progress < 1.0) {
          _progress += 0.01;
        } else {
          timer.cancel();
        }
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        SizedBox(
          height: 200,
          child: LiquidProgressIndicator(
            value: _progress,
            direction: Axis.vertical, // 可以是 Axis.horizontal 或 Axis.vertical
            backgroundColor: Colors.grey[200]!,
            borderColor: Colors.blue,
            borderWidth: 4.0,
            completedColor: Colors.blue,
          ),
        ),
        SizedBox(height: 20),
        Text(
          'Progress: ${(_progress * 100).toStringAsFixed(1)}%',
          style: TextStyle(fontSize: 20),
        ),
      ],
    );
  }
}

在这个示例中:

  1. 我们首先在pubspec.yaml中添加了liquid_progress_indicator_ns依赖。
  2. MyApp中,我们设置了应用的基本结构,包括一个Scaffold和一个AppBar
  3. LiquidProgressIndicatorDemo是一个有状态的Widget,它使用_startProgress方法来模拟进度的变化。
  4. _startProgress方法使用Timer.periodic来每秒增加进度10次(每次增加0.01)。
  5. LiquidProgressIndicator被放置在一个SizedBox中以控制其高度,并配置了各种属性如方向、背景颜色、边框颜色、边框宽度和完成颜色。
  6. 一个Text widget 用于显示当前的进度百分比。

这样,你就可以在你的Flutter应用中显示一个漂亮的液态进度指示器了。

回到顶部