패키지, 저장소 및 앱 카테고리 검색

fl_heatmap 표지
패키지 상세v0.4.6

fl_heatmap

다양한 스타일링 옵션을 갖춘 Flutter 앱용 히트맵 위젯입니다.

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
3.5천
좋아요
56
Pub 점수
160

패키지 설치

flutter pub add fl_heatmap

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

fl_heatmap은 두 차원의 데이터를 시각화하기 위해 사용할 수 있는 사용자 정의 가능한 히트맵 위젯을 제공하는 Flutter 패키지입니다. 색상 테마, 셀 크기, 레이블 커스터마이징과 같은 다양한 스타일링 옵션을 지원하여 데이터셋 내 밀도 또는 빈도 패턴을 표시하는 데 이상적입니다. 여러 플랫폼에서 Flutter 앱에 원활하게 통합되며 부드러운 렌더링과 반응형 동작을 제공합니다. 특히 분석 대시보드, 지리 정보 시각화 및 시계열 히트맵에 유용합니다. 성능을 고려해 설계되었으며, 대규모 데이터셋을 효율적으로 처리하면서도 깔끔하고 직관적인 API를 유지합니다.

사용 사례

  • 데이터 밀도 시각화
  • 분석 대시보드
  • 지리공간 데이터 표현
  • 시계열 히트맵
  • 사용자 활동 추적

주요 기능

  • 사용자 정의 가능한 색상 테마
  • 사용자 정의 가능한 셀 크기
  • 레이블 및 툴팁 지원
  • 반응형 디자인
  • 대규모 데이터 세트에 대한 효율적인 렌더링
  • 크로스 플랫폼 호환성

적합한 대상

  • 데이터 시각화 기능을 구축하는 개발자
  • 분석 대시보드를 만드는 팀
  • 데이터에서 패턴 인식이 필요한 앱
  • 상호작용 차트를 갖춘 교육 도구
  • 공간 또는 시간 데이터를 포함하는 프로젝트

고려 사항

  • 2차원 데이터 구조에 대한 이해가 필요합니다
  • 매우 큰 데이터 세트에서는 성능이 달라질 수 있습니다
  • 툴팁을 제외한 내장 상호작용은 제한적
  • 스타일링 옵션은 최적의 외관을 위해 신중한 구성이 필요합니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

fl_heatmap

A heatmap widget for Flutter apps.

heatmap electricity consumption

heatmap water consumption

Usage

1 - Depend on it

Add it to your package's pubspec.yaml file

dependencies:
  fl_heatmap: ^0.1.0
2 - Install it

Install packages from the command line

flutter packages get
3 - Use it

This is an example for the months of four years:

import 'package:fl_heatmap/fl_heatmap.dart';

class _ExampleState extends State<ExampleApp> {
  HeatmapItem? selectedItem;

  late HeatmapData heatmapData;

  @override
  void initState() {
    _initExampleData();
    super.initState();
  }

  void _initExampleData() {
    const rows = [
      '2022',
      '2021',
      '2020',
      '2019',
    ];
    const columns = [
      'Jan',
      'Feb',
      'Mär',
      'Apr',
      'Mai',
      'Jun',
      'Jul',
      'Aug',
      'Sep',
      'Okt',
      'Nov',
      'Dez',
    ];
    final r = Random();
    const String unit = 'kWh';
    heatmapData = HeatmapData(rows: rows, columns: columns, items: [
      for (int row = 0; row < rows.length; row++)
        for (int col = 0; col < columns.length; col++)
          HeatmapItem(
              value: r.nextDouble() * 6,
              unit: unit,
              xAxisLabel: columns[col],
              yAxisLabel: rows[row]),
    ]);
  }

  @override
  Widget build(BuildContext context) {
    final title = selectedItem != null
        ? '${selectedItem!.value.toStringAsFixed(2)} ${selectedItem!.unit}'
        : '--- ${heatmapData.items.first.unit}';
    final subtitle = selectedItem != null
        ? '${selectedItem!.xAxisLabel} ${selectedItem!.yAxisLabel}'
        : '---';
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Heatmap plugin example app'),
        ),
        body: SingleChildScrollView(
          child: Column(
            children: [
              const SizedBox(height: 16),
              Text(title, textScaleFactor: 1.4),
              Text(subtitle),
              const SizedBox(height: 8),
              Heatmap(
                  onItemSelectedListener: (HeatmapItem? selectedItem) {
                    debugPrint(
                        'Item ${selectedItem?.yAxisLabel}/${selectedItem?.xAxisLabel} with value ${selectedItem?.value} selected');
                    setState(() {
                      this.selectedItem = selectedItem;
                    });
                  },
                  rowsVisible: 5, // Only the first 5 rows are visible
                  heatmapData: heatmapData)
            ],
          ),
        ),
      ),
    );
  }
}

If necessary you can inherit from HeatmapItem and attach some payload, e.g. the electricity costs for the consumption:

class CustomHeatmapItem extends HeatmapItem {
  CustomHeatmapItem(
      {required this.costs,
      required double value,
      required String unit,
      required String xAxisLabel,
      required String yAxisLabel})
      : super(
            value: value,
            unit: unit,
            xAxisLabel: xAxisLabel,
            yAxisLabel: yAxisLabel);
  
  final double costs;
}

Features

  • Supporting custom color schemes with dynamic size or use predefined color palettes such as colorPaletteTemperature, colorPaletteRed, colorPaletteBlue.
  • x- and y-axis labels are completely dynamic
  • Do not show the x-axis/y-axis labels if necessary
  • Detect clicks on cells and get back the data item to show detailed information about the cell
  • Use different styles for the cells if necessary
  • Show only the first lines and user can request to show all

Apps using this plugin

EHW+ Your app?
EHW+ ...

카테고리

소스 저장소

이 패키지를 사용하는 프로젝트

아직 데이터가 없습니다.