📜  实现Flutter Gauge(1)

📅  最后修改于: 2023-12-03 15:39:08.464000             🧑  作者: Mango

实现Flutter Gauge

在移动应用开发中,仪表盘的设计十分重要。Flutter Gauge 是 Flutter 社区中的一个插件,允许快速构建各种类型的仪表盘。

安装

要使用 Flutter Gauge,首先需要在您的工程中添加它作为依赖项。将以下代码添加到你的 pubspec.yaml 文件中:

dependencies:
  flutter_gauge: ^1.0.9

现在,运行 flutter packages get 命令安装此库。

使用

Flutter Gauge 简单易用,只需几行代码即可创建一个漂亮的仪表盘。以下是一个例子:

import 'dart:math';

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

class GaugeExample extends StatelessWidget {
  final double level;

  GaugeExample({required this.level});

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        width: 150,
        height: 150,
        child: FlutterGauge(
          handSize: 70,
          start: 0,
          end: 100,
          graduationCount: 10,
          displayWidget: Padding(
            padding: const EdgeInsets.only(left: 24.0, bottom: 24.0),
            child: Text(
              '${level.toStringAsFixed(1)}',
              style: TextStyle(
                fontSize: 30,
                fontWeight: FontWeight.bold,
                color: Colors.black,
              ),
            ),
          ),
          textStyle: TextStyle(
            fontSize: 16,
            fontWeight: FontWeight.bold,
            color: Colors.grey[500],
          ),
          hand: GaugeHand(
            mainAxisAlignment: MainAxisAlignment.center,
            child: Container(
              width: 2.0,
              height: 45,
              decoration: BoxDecoration(
                color: Colors.black,
                borderRadius: BorderRadius.circular(5.0),
              ),
            ),
          ),
          secondsMarker: SecondsMarker(
            seconds: 1,
            color: Colors.grey[600],
          ),
          secondsMarkerDecoration: BoxDecoration(
            color: Colors.grey[600],
            shape: BoxShape.circle,
          ),
          bgGradient: LinearGradient(
            colors: [
              Colors.white,
              Colors.grey[200]!,
            ],
            begin: Alignment.topCenter,
            stops: [
              0.2,
              0.8,
            ],
            end: Alignment.bottomCenter,
          ),
          inactiveColor: Colors.grey[400]!,
          activeColor: Colors.red,
          pointerAngle: mapValueFromRangeToRange(
            level,
            0,
            100,
            135,
            405,
          ),
        ),
      ),
    );
  }

  double mapValueFromRangeToRange(
      double value, double fromLow, double fromHigh, double toLow, double toHigh) {
    return (value - fromLow) *
            (toHigh - toLow) /
            (fromHigh - fromLow) +
        toLow;
  }
}

这个例子创建了一个半径为 75 的仪表盘,用于显示 level 变量,该变量可以是介于 0 和 100 之间的任何 double 值。这个例子使用了一个简单的映射函数,以将 level 转换为适合指针的角度。

自定义

Flutter Gauge 有许多可用的选项,可以用于高度自定义你的仪表盘。以下是一些可用选项的介绍:

  • handSize :指针的大小(相对于仪表盘半径)。
  • startend :仪表盘的起始值和结束值。
  • graduationCount :仪表盘上的标志数。
  • displayWidget :显示在仪表盘中心的小部件。
  • textStyle :用于显示仪表盘上数字的文本样式。
  • hand :指针的视觉表示,根据需要可以非常自定义。
  • secondsMarkersecondsMarkerDecoration :用于显示每秒钟的标记。
  • bgGradient :仪表盘的背景颜色。您可以使用任何线性渐变。
  • inactiveColoractiveColor :用于渐变的颜色。
  • pointerAngle :指针的角度。
总结

Flutter Gauge 是一个非常实用的 Flutter 库,允许您快速构建仪表盘。它是十分灵活的,使您能够完全自定义仪表盘的外观和感觉。无论您正在构建一个真实世界应用程序还是更小的项目,Flutter Gauge 将使您的开发工作更容易,效果更好。