Flutter时间图表展示插件time_chart的使用

Flutter时间图表展示插件time_chart的使用

pub package

一个在Flutter中使用的出色的时间图表插件。

图表类型

TimeChart AmountChart

开始使用

1 - 添加依赖

将以下内容添加到你的pubspec.yaml文件中:

dependencies:
  time_chart: ^0.5.4

2 - 安装依赖

从命令行安装包:

flutter packages get

3 - 使用

只需将DateTimeRange列表传递给data:参数。列表必须按时间顺序排序。最新数据放在最前面,最旧的数据放在最后面。

示例

以下是完整的示例代码:

import 'dart:math';

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  MyApp({Key? key}) : super(key: key);

  // 数据必须按时间顺序排序。
  final smallDataList = [
    DateTimeRange(
      start: DateTime(2021, 2, 24, 23, 15),
      end: DateTime(2021, 2, 25, 7, 30),
    ),
    DateTimeRange(
      start: DateTime(2021, 2, 22, 1, 55),
      end: DateTime(2021, 2, 22, 9, 12),
    ),
    DateTimeRange(
      start: DateTime(2021, 2, 20, 0, 25),
      end: DateTime(2021, 2, 20, 7, 34),
    ),
    DateTimeRange(
      start: DateTime(2021, 2, 17, 21, 23),
      end: DateTime(2021, 2, 18, 4, 52),
    ),
    DateTimeRange(
      start: DateTime(2021, 2, 13, 6, 32),
      end: DateTime(2021, 2, 13, 13, 12),
    ),
    DateTimeRange(
      start: DateTime(2021, 2, 1, 9, 32),
      end: DateTime(2021, 2, 1, 15, 22),
    ),
    DateTimeRange(
      start: DateTime(2021, 1, 22, 12, 10),
      end: DateTime(2021, 1, 22, 16, 20),
    ),
  ];

  List<DateTimeRange> getRandomSampleDataList() {
    final List<DateTimeRange> list = [];
    final random = Random();

    for (int i = 0; i < 10000; ++i) {
      final int randomMinutes1 = random.nextInt(59);
      final int randomMinutes2 = random.nextInt(59);
      final start = DateTime(2021, 2, 1 - i, 0, randomMinutes1);
      final end = DateTime(2021, 2, 1 - i, 7, randomMinutes2 + randomMinutes1);

      list.add(DateTimeRange(
        start: start,
        end: end,
      ));
    }
    return list;
  }

  late final List<DateTimeRange> bigDataList = getRandomSampleDataList();

  [@override](/user/override)
  Widget build(BuildContext context) {
    const sizedBox = SizedBox(height: 16);

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Time chart example app')),
        body: SingleChildScrollView(
          child: Padding(
            padding: const EdgeInsets.all(16.0),
            child: Column(
              children: [
                const Text('Weekly time chart'),
                TimeChart(
                  data: bigDataList,
                  viewMode: ViewMode.weekly,
                ),
                sizedBox,
                const Text('Monthly time chart'),
                TimeChart(
                  data: bigDataList,
                  viewMode: ViewMode.monthly,
                ),
                sizedBox,
                const Text('Weekly amount chart'),
                TimeChart(
                  data: smallDataList,
                  chartType: ChartType.amount,
                  viewMode: ViewMode.weekly,
                  barColor: Colors.deepPurple,
                ),
                sizedBox,
                const Text('Monthly amount chart'),
                TimeChart(
                  data: smallDataList,
                  chartType: ChartType.amount,
                  viewMode: ViewMode.monthly,
                  barColor: Colors.deepPurple,
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

更多关于Flutter时间图表展示插件time_chart的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter时间图表展示插件time_chart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


time_chart 是一个用于在 Flutter 应用中展示时间图表的插件。它可以帮助你轻松地创建时间轴上的数据可视化,支持多种时间间隔(如分钟、小时、天等)。以下是如何使用 time_chart 插件的基本步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 time_chart 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  time_chart: ^0.1.0  # 请检查最新版本

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

2. 导入包

在你的 Dart 文件中导入 time_chart 包:

import 'package:time_chart/time_chart.dart';

3. 创建时间图表数据

time_chart 需要你提供 TimeChartData 对象来展示数据。你可以通过 TimeChartData 类来创建数据。

final List<TimeChartItem> items = [
  TimeChartItem(
    start: DateTime(2023, 10, 1, 10, 0),
    end: DateTime(2023, 10, 1, 12, 0),
    color: Colors.blue,
  ),
  TimeChartItem(
    start: DateTime(2023, 10, 1, 14, 0),
    end: DateTime(2023, 10, 1, 16, 0),
    color: Colors.red,
  ),
];

final timeChartData = TimeChartData(
  items: items,
  start: DateTime(2023, 10, 1, 0, 0),
  end: DateTime(2023, 10, 2, 0, 0),
);

4. 使用 TimeChart 组件

Widget 中使用 TimeChart 组件来展示时间图表:

class MyTimeChart extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Time Chart Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: TimeChart(
          data: timeChartData,
          style: TimeChartStyle(
            backgroundColor: Colors.white,
            timeAxisColor: Colors.grey,
            timeAxisTextColor: Colors.black,
            timeAxisInterval: TimeInterval.hours(2),
          ),
        ),
      ),
    );
  }
}

5. 运行应用

现在你可以运行你的 Flutter 应用,查看 time_chart 插件生成的时间图表。

自定义样式

你可以通过 TimeChartStyle 类来自定义图表的样式,例如背景颜色、时间轴颜色、时间轴间隔等。

TimeChartStyle(
  backgroundColor: Colors.white,
  timeAxisColor: Colors.grey,
  timeAxisTextColor: Colors.black,
  timeAxisInterval: TimeInterval.hours(2),
)

6. 处理交互

time_chart 还支持一些交互功能,例如点击事件。你可以通过 onItemTap 回调来处理用户点击图表中的某个项目的事件。

TimeChart(
  data: timeChartData,
  onItemTap: (item) {
    print('Item tapped: ${item.start} - ${item.end}');
  },
)
回到顶部