搜索插件、代码仓与 APP 分类

chart_sparkline 封面
插件详情v1.1.2

chart_sparkline

适用于 Flutter 的精美折线图。包含平均线、最高值和最低值。

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
7490
喜欢数
135
Pub 分数
150

安装插件

flutter pub add chart_sparkline

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

Chart Sparkline 是一个 Flutter 包,可实现紧凑且视觉上吸引人的微型图表。它在小空间内显示趋势,具有平均线功能,并突出显示最大值和最小值。非常适合仪表板和数据摘要,支持 Android、iOS、Web、macOS、Windows 和 Linux 等多个平台。该包轻量级,可无缝集成到现有的 Flutter 应用中。其简洁的设计提升了数据可读性,又不会让用户感到信息过载。

适合场景

  • 仪表板小部件
  • 实时数据跟踪
  • 性能趋势可视化
  • 紧凑的数据摘要
  • 财务指标显示

主要特点

  • 平均线可视化
  • 突出显示最大值和最小值
  • 极简设计
  • 跨平台支持
  • 与 Flutter 的轻松集成
  • 平滑渲染

适合对象

  • 数据仪表板
  • 移动和Web应用
  • 分析接口
  • 财务和健康追踪应用
  • 需要紧凑图表的 UI

使用建议

  • 最适合小型数据集
  • 有限的交互性
  • 无工具提示或标签
  • 需要手动格式化数据
  • 不适合复杂的图表类型

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

pub package

chart_sparkline

Beautiful sparkline charts for Flutter.

screenshot

Online Demo

Online Demo

Installation

Install the latest version from pub.

Quick Start

Import the package, create a Sparkline , and pass it your data.

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

void main() {
  var data = [0.0, 1.0, 1.5, 2.0, 0.0, 0.0, -0.5, -1.0, -0.5, 0.0, 0.0];
  runApp(
    MaterialApp(
      home: Scaffold(
        body: Center(
          child: Container(
            width: 300.0,
            height: 100.0,
            child: Sparkline(
              data: data,
            ),
          ),
        ),
      ),
    ),
  );
}

base example screenshot

Customization

Sparkline
Property Default
lineWidth 2.0
lineColor Colors.lightBlue
lineGradient null

Example:

Sparkline(
  data: data,
  lineWidth: 5.0,
  lineColor: Colors.purple,
);

lineopts example screenshot

Sparkline(
  data: data,
  lineWidth: 10.0,
  lineGradient: LinearGradient(
    begin: Alignment.topCenter,
    end: Alignment.bottomCenter,
    colors: [Colors.purple[800], Colors.purple[200]],
  ),
);

lineopts example screenshot


Points
Property Default
pointsMode PointsMode.none
pointSize 4.0
pointColor Colors.lightBlue[800]
pointIndex null
PointsMode Description
none (default) Do not draw individual points.
all Draw all the points in the data set.
last Draw only the last point in the data set.
atIndex Draw one point at the index specified by pointIndex.

Example:

Sparkline(
  data: data,
  pointsMode: PointsMode.all,
  pointSize: 8.0,
  pointColor: Colors.amber,
);

all points example screenshot

Sparkline(
  data: data,
  pointsMode: PointsMode.last,
  pointSize: 8.0,
  pointColor: Colors.amber,
);

last point example screenshot

Sparkline(
  data: data,
  pointsMode: PointsMode.atIndex,
  pointIndex: 7,
  pointSize: 8.0,
  pointColor: Colors.amber,
);

Fill
Property Default
fillMode FillMode.none
fillColor Colors.lightBlue[200]
fillGradient null
FillMode Description
none (default) Do not fill, draw only the sparkline.
above Fill the area above the sparkline.
below Fill the area below the sparkline.

Example:

Sparkline(
  data: data,
  fillMode: FillMode.below,
  fillColor: Colors.red[200],
);

fill below example screenshot

Sparkline(
  data: data,
  fillMode: FillMode.above,
  fillColor: Colors.red[200],
);

fill above example screenshot

Sparkline(
  data: data,
  fillMode: FillMode.below,
  fillGradient: LinearGradient(
    begin: Alignment.topCenter,
    end: Alignment.bottomCenter,
    colors: [Colors.red[800], Colors.red[200]],
  ),
);

fill above example screenshot

Smoothing
Sparkline(
  data: data,
  useCubicSmoothing: true,
  cubicSmoothingFactor: 0.2,
),

cubic smoothing example screenshot

Average Line
Sparkline(
  data: data,
  averageLine: true,
  averageLabel: true,
),

cubic smoothing example screenshot

first, last, highest and the lowest
Sparkline(
  data: data,
  kLine: ['max', 'min', 'first', 'last'],
),

cubic smoothing example screenshot

Grid Line
Sparkline(
  gridLinelabelPrefix: '\$',
  gridLineLabelPrecision: 3,
  enableGridLines: true,
),

cubic smoothing example screenshot

Animation Line

Online Demo

AnimatedBuilder(
  animation: AnimationController(duration: const Duration(seconds: 1), vsync: this),
  builder: (context, child) => Sparkline(
    data: [0.0, 1.0, 1.5, 2.0, 0.0, 0.0, -0.5, -1.0, -0.5, 0.0, 0.0],
    animationController: _controller,
    pointsMode: PointsMode.all,
    pointSize: 8.0,
  ),
),

Todo:
  • [x] simple sparkline
  • [x] custom line width
  • [x] custom line color
  • [x] optional rounded corners
  • [x] fill
  • [x] embiggen individual points/change color
  • [x] different points modes [all/last/none]
  • [ ] animate between two sparklines
  • [x] animate drawing a single sparkline
  • [ ] gesture detector to select closest point to tap
  • [x] baseline
  • [x] different fill modes [above/below/none]
  • [x] fix edge points overflowing by offsetting by lineWidth
  • [x] better corner rounding
  • [x] axis labels
  • [x] gradient shader on line paint
  • [x] gradient shader on fill paint
  • [ ] multiple overlapping sparklines on a shared axis

所属分类

源码仓库

使用此插件的项目

暂无相关数据。