Flutter热力图日历插件flutter_heatmap_calendar_fr的使用
Flutter热力图日历插件flutter_heatmap_calendar_fr的使用
Flutter Heatmap Calendar提供了两种热力图展示方式:HeatMap
和 HeatMapCalendar
。这两种方式都受到GitHub贡献图表的启发。
开始使用
添加依赖
在你的项目中添加 flutter_heatmap_calendar
依赖:
flutter pub add flutter_heatmap_calendar
或者,在你的 pubspec.yaml
文件中添加以下行:
dependencies:
flutter_heatmap_calendar: ^1.0.6
然后运行 flutter pub get
来安装依赖。
导入库
在你的 Dart 文件中导入 flutter_heatmap_calendar
库:
import 'package:flutter_heatmap_calendar/flutter_heatmap_calendar.dart';
属性
HeatMap
以下是 HeatMap
组件的属性:
属性名 | 类型 | 默认值 | 描述 |
---|---|---|---|
startDate | DateTime? |
一年前的日期 | 热力图的开始日期。 |
endDate | DateTime? |
当天 | 热力图的结束日期。 |
datasets | Map<DateTime, int>? |
null |
要显示的数据集。 |
colorsets | Map<int, Color> |
必须提供 | 颜色集合,用于阈值的关键值。至少需要一个颜色。 |
defaultColor | Color? |
#F8F9FA | 每个方块的默认颜色。 |
textColor | Color? |
#8A8A8A | 每个文本的颜色。 |
colorMode | ColorMode |
ColorMode.opacity |
颜色模式,可以是 ColorMode.opacity 或 ColorMode.color 。 |
size | double? |
20 | 每个方块的大小。 |
fontSize | double? |
null |
每个文本的字体大小。 |
onClick | Function(DateTime)? |
null |
用户点击方块时触发的回调函数。 |
margin | EdgeInsets? |
EdgeInsets.all(2) | 方块的边距。 |
borderRadius | double? |
5 | 方块的圆角半径。 |
scrollable | bool |
false | 是否使热力图可滚动。 |
showText | bool? |
false | 是否显示每个方块内的日期文本。 |
showColorTip | bool? |
true | 是否显示颜色提示。 |
colorTipHelper | List<Widget?>? |
null |
显示在颜色提示左右两侧的控件。 |
colorTipCount | int? |
7 | 颜色提示的长度。 |
colorTipSize | double? |
10 | 颜色提示的大小。 |
HeatMapCalendar
以下是 HeatMapCalendar
组件的属性:
属性名 | 类型 | 默认值 | 描述 |
---|---|---|---|
initDate | DateTime? |
当天 | 初始化的年/月值。 |
datasets | Map<DateTime, int>? |
null |
要显示的数据集。 |
colorsets | Map<int, Color> |
必须提供 | 颜色集合,用于阈值的关键值。至少需要一个颜色。 |
defaultColor | Color? |
#F8F9FA | 每个方块的默认颜色。 |
textColor | Color? |
#8A8A8A | 每个文本的颜色。 |
colorMode | ColorMode |
ColorMode.opacity |
颜色模式,可以是 ColorMode.opacity 或 ColorMode.color 。 |
size | double? |
42 | 每个方块的大小。 |
fontSize | double? |
null |
每个文本的字体大小。 |
monthFontSize | double? |
12 | 月份标签的字体大小。 |
weekFontSize | double? |
12 | 星期标签的字体大小。 |
weekTextColor | Color? |
#758EA1 | 星期标签的默认颜色。 |
onClick | Function(DateTime)? |
null |
用户点击方块时触发的回调函数。 |
margin | EdgeInsets |
EdgeInsets.all(2) | 方块的边距。 |
borderRadius | double? |
5 | 方块的圆角半径。 |
flexible | bool? |
false | 是否使热力图自适应屏幕尺寸。 |
showColorTip | bool? |
true | 是否显示颜色提示。 |
colorTipHelper | List<Widget?>? |
null |
显示在颜色提示左右两侧的控件。 |
colorTipCount | int? |
7 | 颜色提示的长度。 |
colorTipSize | double? |
10 | 颜色提示的大小。 |
示例
使用HeatMap
import 'package:flutter_heatmap_calendar/flutter_heatmap_calendar.dart';
// 示例代码
HeatMap(
datasets: {
DateTime(2021, 1, 6): 3,
DateTime(2021, 1, 7): 7,
DateTime(2021, 1, 8): 10,
DateTime(2021, 1, 9): 13,
DateTime(2021, 1, 13): 6,
},
colorMode: ColorMode.opacity,
showText: false,
scrollable: true,
colorsets: {
1: Colors.red,
3: Colors.orange,
5: Colors.yellow,
7: Colors.green,
9: Colors.blue,
11: Colors.indigo,
13: Colors.purple,
},
onClick: (value) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(value.toString())));
},
);
使用HeatMapCalendar
import 'package:flutter_heatmap_calendar/flutter_heatmap_calendar.dart';
// 示例代码
HeatMapCalendar(
defaultColor: Colors.white,
flexible: true,
colorMode: ColorMode.color,
datasets: {
DateTime(2021, 1, 6): 3,
DateTime(2021, 1, 7): 7,
DateTime(2021, 1, 8): 10,
DateTime(2021, 1, 9): 13,
DateTime(2021, 1, 13): 6,
},
colorsets: const {
1: Colors.red,
3: Colors.orange,
5: Colors.yellow,
7: Colors.green,
9: Colors.blue,
11: Colors.indigo,
13: Colors.purple,
},
onClick: (value) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(value.toString())));
},
);
完整示例Demo
import 'package:flutter/material.dart';
import 'pages/heatmap_calendar_example.dart';
import 'pages/heatmap_example.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Heatmap Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: '/',
routes: {
'/': (context) => const MyHomePage(),
'/heatmap_calendar': (context) => const HeatMapCalendarExample(),
'/heatmap': (context) => const HeatMapExample(),
},
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Flutter heatmap example')),
body: SafeArea(
child: ListView(
children: [
ListTile(
title: const Text('Heatmap calendar'),
onTap: () => Navigator.of(context).pushNamed('/heatmap_calendar'),
),
ListTile(
title: const Text('Heatmap'),
onTap: () => Navigator.of(context).pushNamed('/heatmap'),
),
],
),
),
);
}
}
更多关于Flutter热力图日历插件flutter_heatmap_calendar_fr的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter热力图日历插件flutter_heatmap_calendar_fr的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用flutter_heatmap_calendar_fr
插件来创建一个热力图日历的示例代码。这个插件允许你以热力图的形式展示日历数据,非常适合用于显示某些日期上的活动密集程度,比如用户访问量、事件数量等。
首先,确保你已经在pubspec.yaml
文件中添加了flutter_heatmap_calendar_fr
依赖:
dependencies:
flutter:
sdk: flutter
flutter_heatmap_calendar_fr: ^最新版本号 # 请替换为最新的版本号
然后,运行flutter pub get
来获取依赖。
接下来,在你的Dart文件中,你可以按照以下步骤来使用这个插件:
import 'package:flutter/material.dart';
import 'package:flutter_heatmap_calendar_fr/flutter_heatmap_calendar_fr.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Heatmap Calendar Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
// 模拟一些数据
final Map<DateTime, int> data = {
DateTime(2023, 10, 1): 5,
DateTime(2023, 10, 5): 15,
DateTime(2023, 10, 10): 25,
DateTime(2023, 10, 15): 35,
DateTime(2023, 10, 20): 10,
// 可以添加更多数据点
};
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Heatmap Calendar Example'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: HeatmapCalendar(
// 设置开始和结束日期
startDate: DateTime(2023, 10, 1),
endDate: DateTime(2023, 10, 31),
// 数据源
data: data,
// 设置热力图的颜色梯度
colorGradient: [
Colors.blue.withOpacity(0.2),
Colors.blue.withOpacity(0.4),
Colors.blue,
Colors.red,
],
// 其他可选参数,如选择日期改变时的回调等
onDateSelected: (DateTime date, int value) {
print('Selected date: $date, value: $value');
},
),
),
);
}
}
在这个示例中:
- 我们首先定义了一些模拟数据,其中键是日期,值是对应日期的数值(例如访问量)。
- 在
HeatmapCalendar
组件中,我们设置了开始日期和结束日期,以及数据源。 colorGradient
参数定义了热力图的颜色梯度,你可以根据需要调整这些颜色。onDateSelected
是一个可选的回调,当用户点击某个日期时,会触发这个回调,并传递被点击的日期和对应的数值。
确保你的Flutter环境已经设置好,并且所有依赖都已正确安装,然后运行这个示例,你应该能够看到一个热力图日历,其中不同日期的颜色深浅反映了数据的多少。