Flutter仪表盘插件syncfusion_flutter_gauges的使用

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

Flutter仪表盘插件syncfusion_flutter_gauges的使用

介绍

Flutter Gauges

syncfusion_flutter_gauges 是一个功能丰富的Flutter库,提供了线性仪表(Linear Gauge)和径向仪表(Radial Gauge,也称圆形仪表)的数据可视化组件。这些组件具有交互性和动画效果,并且高度可定制。

注意: 这是一个商业包。要使用此包,您需要拥有 Syncfusion® 商业许可证或 免费的Syncfusion®社区许可证。有关更多详情,请参阅LICENSE文件

功能概述

线性仪表特性

  • 方向:可以设置为垂直或水平。
  • :用于绘制数值的刻度,支持自定义厚度和边缘样式。
  • 标签和刻度:可以自定义标签、主要刻度和次要刻度的样式。
  • 范围:添加不同样式的多个范围以快速可视化数据。
  • 指针:包括形状标记指针、小部件标记指针和条形指针,所有指针都可以根据需要进行自定义。
  • 交互:支持通过滑动或拖拽手势移动指针。
  • 动画:加载或值变化时对元素进行动画处理。

径向仪表特性

  • :基于设计需求显示在圆弧上的数值集合,支持自定义标签、刻度和轴线。
  • 范围:帮助快速可视化数值所在的区域,并可以在范围内添加文本以提高可读性。
  • 指针:包含针形指针、标记指针、范围指针和小部件指针,所有指针均可自定义。
  • 动画:当指针从一个值移动到另一个值时提供视觉吸引力的动画效果。
  • 交互:允许运行时通过拖拽改变值,并显示覆盖层。
  • 注释:在特定位置添加文本或图像等小部件作为注释。

安装与入门

安装

确保您的pubspec.yaml文件中包含以下依赖项:

dependencies:
  syncfusion_flutter_gauges: ^最新版本号

然后执行 flutter pub get 来安装它。

使用示例

添加线性仪表到Widget树中

import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_gauges/gauges.dart';

class LinearGaugeExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: Container(
            child: SfLinearGauge(),
          ),
        ),
      ),
    );
  }
}

添加线性仪表元素

class EnhancedLinearGaugeExample extends StatefulWidget {
  @override
  _EnhancedLinearGaugeExampleState createState() => _EnhancedLinearGaugeExampleState();
}

class _EnhancedLinearGaugeExampleState extends State<EnhancedLinearGaugeExample> {
  double _pointerValue = 45;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: Container(
            child: SfLinearGauge(
              ranges: [
                LinearGaugeRange(startValue: 0, endValue: 50),
              ],
              markerPointers: [
                LinearShapePointer(value: 50),
              ],
              barPointers: [LinearBarPointer(value: 80)],
            ),
          ),
        ),
      ),
    );
  }
}

添加径向仪表到Widget树中

import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_gauges/gauges.dart';

class RadialGaugeExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: Container(
            child: SfRadialGauge(),
          ),
        ),
      ),
    );
  }
}

添加径向仪表元素

class EnhancedRadialGaugeExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: Container(
            child: SfRadialGauge(
              axes: <RadialAxis>[
                RadialAxis(
                  minimum: 0,
                  maximum: 150,
                  ranges: <GaugeRange>[
                    GaugeRange(startValue: 0, endValue: 50, color: Colors.green),
                    GaugeRange(startValue: 50, endValue: 100, color: Colors.orange),
                    GaugeRange(startValue: 100, endValue: 150, color: Colors.red),
                  ],
                  pointers: <GaugePointer>[
                    NeedlePointer(value: 90),
                  ],
                  annotations: <GaugeAnnotation>[
                    GaugeAnnotation(
                      widget: Container(
                        child: Text('90.0', style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold)),
                      ),
                      angle: 90,
                      positionFactor: 0.5,
                    ),
                  ],
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

以上代码展示了如何创建基本的线性和径向仪表,并为其添加一些常见的元素如范围、指针和注释。您可以根据自己的需求进一步调整和扩展这些例子中的配置选项。


更多关于Flutter仪表盘插件syncfusion_flutter_gauges的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter仪表盘插件syncfusion_flutter_gauges的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用syncfusion_flutter_gauges插件来创建一个简单的仪表盘(Gauge)的示例代码。这个示例将展示如何设置和配置一个基本的径向仪表盘(Radial Gauge)。

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

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

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

接下来,在你的Flutter项目中,你可以按照以下步骤创建一个简单的仪表盘:

import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_gauges/gauges.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Syncfusion Flutter Gauges Example'),
        ),
        body: Center(
          child: SfRadialGauge(
            // 设置仪表盘的中心点
            axes: <RadialAxis>[
              RadialAxis(
                // 设置指针
                pointers: <GaugePointer>[
                  NeedlePointer(
                    // 指针值
                    value: 50,
                    // 指针长度
                    lengthFactor: 0.8,
                    // 指针尾部宽度
                    tailWidth: 2,
                    // 指针颜色
                    needleColor: Colors.blue,
                    // 指针尾部颜色
                    tailColor: Colors.blue.withOpacity(0.6),
                  ),
                ],
                // 设置仪表盘的范围
                annotations: <GaugeAnnotation>[
                  GaugeAnnotation(
                    axisValue: 0,
                    positionFactor: 0.5,
                    widget: Container(
                      child: Text(
                        '0',
                        style: TextStyle(color: Colors.black, fontSize: 16),
                      ),
                    ),
                  ),
                  GaugeAnnotation(
                    axisValue: 100,
                    positionFactor: 0.5,
                    widget: Container(
                      alignment: Alignment.centerRight,
                      child: Text(
                        '100',
                        style: TextStyle(color: Colors.black, fontSize: 16),
                      ),
                    ),
                  ),
                ],
                // 设置仪表盘刻度
                ranges: <GaugeRange>[
                  GaugeRange(
                    start: 0,
                    end: 100,
                    color: Colors.grey.withOpacity(0.3),
                  ),
                ],
                // 设置仪表盘标签
                labels: <GaugeLabel>[
                  GaugeLabel(value: '0'),
                  GaugeLabel(value: '50'),
                  GaugeLabel(value: '100'),
                ],
                // 仪表盘最小值
                minimum: 0,
                // 仪表盘最大值
                maximum: 100,
              ),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个基本的径向仪表盘(SfRadialGauge),并配置了以下内容:

  1. 指针(NeedlePointer:设置了一个蓝色的指针,其长度为仪表盘半径的80%,尾部宽度为2,尾部颜色为蓝色的60%不透明度。
  2. 刻度注释(GaugeAnnotation:在0和100的位置添加了文本注释。
  3. 范围(GaugeRange:设置了从0到100的范围,颜色为灰色的30%不透明度。
  4. 标签(GaugeLabel:在0、50和100的位置添加了标签。
  5. 最小值和最大值:分别设置为0和100。

你可以根据需要进一步自定义和扩展这个仪表盘,比如添加更多的指针、更改颜色、添加动画效果等。Syncfusion的文档提供了丰富的选项和示例,可以帮助你实现更复杂的仪表盘。

回到顶部