Flutter时间范围选择器插件flutter_occurrence_time_range_selector的使用
Flutter时间范围选择器插件flutter_occurrence_time_range_selector的使用
📊 Occurrence Time Range Selector
Occurrence Time Range Selector
是一个高度互动且可自定义的 Flutter 小部件,允许用户在动态图表上选择时间范围的同时可视化事件的发生。
✨ 特性
- 🔍 放大和平移功能,用于详细探索。
- 📅 动态的时间刻度,适应所选范围。
- 📊 堆叠的垂直条形图,用于多个事件类别。
- 🎨 可自定义的颜色和样式。
- ⏱️ 毫秒精度,适用于高细节视图。
- 🖱️ 优化用于鼠标和键盘操作的桌面使用。
🚀 开始使用
导入包
首先,在您的 Dart 代码中导入 flutter_occurrence_time_range_selector
包:
import 'package:flutter_occurrence_time_range_selector/flutter_occurrence_time_range_selector.dart';
使用示例
然后,您可以在 Flutter 应用程序中使用 TimeRangeSelector
小部件:
final now = DateTime.now();
TimeRangeSelector(
startDate: now.subtract(Duration(days: 30)),
endDate: now.add(Duration(days: 30)),
events: [
TimeEvent(tag: 'Class A', dateTime: now.subtract(Duration(days: 15))),
TimeEvent(tag: 'Class B', dateTime: now.subtract(Duration(days: 7))),
TimeEvent(tag: 'Class A', dateTime: now),
TimeEvent(tag: 'Class C', dateTime: now.add(Duration(days: 10))),
TimeEvent(tag: 'Class B', dateTime: now.add(Duration(days: 20))),
],
tagStyles: const {
'Class A': TagStyle(color: Colors.blue),
'Class B': TagStyle(color: Colors.red),
'Class C': TagStyle(color: Colors.green),
},
onRangeChanged: (DateTime newStart, DateTime newEnd) {
print('New range: $newStart to $newEnd');
},
style: const TimelineStyle(
axisColor: Colors.black,
axisLabelStyle: TextStyle(fontSize: 18, color: Colors.black),
barSpacing: 2,
backgroundColor: Colors.white,
),
)
更多关于Flutter时间范围选择器插件flutter_occurrence_time_range_selector的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter时间范围选择器插件flutter_occurrence_time_range_selector的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何使用Flutter插件flutter_occurrence_time_range_selector
的示例代码。这个插件主要用于在Flutter应用中实现时间范围选择器。
首先,确保你已经在pubspec.yaml
文件中添加了依赖:
dependencies:
flutter:
sdk: flutter
flutter_occurrence_time_range_selector: ^最新版本号 # 请替换为实际最新版本号
然后运行flutter pub get
来获取依赖。
接下来,在你的Flutter项目中,你可以按照以下方式使用flutter_occurrence_time_range_selector
插件:
import 'package:flutter/material.dart';
import 'package:flutter_occurrence_time_range_selector/flutter_occurrence_time_range_selector.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Time Range Selector Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: TimeRangeSelectorDemo(),
);
}
}
class TimeRangeSelectorDemo extends StatefulWidget {
@override
_TimeRangeSelectorDemoState createState() => _TimeRangeSelectorDemoState();
}
class _TimeRangeSelectorDemoState extends State<TimeRangeSelectorDemo> {
DateTime? startTime;
DateTime? endTime;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Time Range Selector Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TimeRangeSelector(
initialSelectedTimeRange: TimeRange(
start: DateTime.now().subtract(Duration(hours: 2)),
end: DateTime.now(),
),
onTimeRangeChanged: (TimeRange newTimeRange) {
setState(() {
startTime = newTimeRange.start;
endTime = newTimeRange.end;
});
},
timePickerBuilder: (BuildContext context, TimeOfDay timeOfDay) {
return Container(
decoration: BoxDecoration(
border: Border.all(color: Colors.grey),
borderRadius: BorderRadius.circular(4.0),
),
child: Center(
child: Text(
'${timeOfDay.format(context)}',
style: TextStyle(fontSize: 16),
),
),
);
},
headerBuilder: (BuildContext context, DateTime dateTime) {
return Text(
'${dateTime.year}-${dateTime.month.toString().padLeft(2, '0')}-${dateTime.day.toString().padLeft(2, '0')}',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
);
},
),
SizedBox(height: 20),
if (startTime != null && endTime != null)
Text(
'Selected Time Range: ${startTime!.toLocal().toString().split(' ')[1]} - ${endTime!.toLocal().toString().split(' ')[1]}',
style: TextStyle(fontSize: 18),
),
],
),
),
);
}
}
代码解释:
- 依赖引入:在
pubspec.yaml
中添加flutter_occurrence_time_range_selector
依赖。 - 主应用:
MyApp
是一个简单的Flutter应用,包含一个主页面TimeRangeSelectorDemo
。 - 时间范围选择器页面:
TimeRangeSelectorDemo
是一个有状态的Widget,它包含了一个TimeRangeSelector
。 - 初始时间范围:
initialSelectedTimeRange
设置了初始选择的时间范围,这里设置为当前时间向前推2小时到当前时间。 - 时间范围变化回调:
onTimeRangeChanged
是一个回调函数,当用户选择新的时间范围时,这个函数会被调用,并更新状态。 - 自定义时间选择器:
timePickerBuilder
允许你自定义每个时间点的显示样式。 - 自定义头部:
headerBuilder
允许你自定义日期的头部显示样式。 - 显示选中的时间范围:如果选中了时间范围,会在页面上显示选中的时间范围。
这个示例展示了如何使用flutter_occurrence_time_range_selector
插件创建一个简单的时间范围选择器,并自定义其显示样式。你可以根据需求进一步自定义和扩展。