Flutter日历管理插件clean_calendar的使用
Flutter日历管理插件clean_calendar的使用
Word from creator
Hello👋, Clean Calendar目前处于早期开发阶段,可能会有很多破坏性变化。如果您有任何问题或建议,请通过GitHub issues、邮件、discord或我GitHub个人资料上列出的任何方式联系我。
是的,给这个包一个👍(Pub)或⭐(Github)会鼓励我更多地工作。
Package description
准备好用这个很棒的日历包来增强你的Flutter应用程序吧!凭借其简单而优雅的设计,你可以创建一个完全定制的日历以满足你的需求。它提供了一个可定制的月视图,并且可以高亮显示具有连续性的日期。这只是开始,我们将会添加更多的功能。
Features
- 显示连续日期
- 月度日历
- 深色模式 | 浅色模式
- 周度日历
- 深色模式 | 浅色模式
Getting started
添加依赖
在pubspec.yaml
文件中添加以下依赖:
dependencies:
clean_calendar:
导入包
在您的Dart文件中导入clean_calendar
包:
import 'package:clean_calendar/clean_calendar.dart';
Basic Usage
下面是一个简单的使用示例,展示如何在应用中集成CleanCalendar
组件:
class Home extends StatelessWidget {
const Home({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
elevation: 2,
title: const Text("Calendar"),
),
body: CleanCalendar(
datesForStreaks: [
DateTime.now().subtract(Duration(days: 5)),
DateTime.now().subtract(Duration(days: 4)),
DateTime.now().subtract(Duration(days: 3)),
// Add more dates as needed
],
),
);
}
}
Customisations
您可以根据需要自定义日历的外观和行为。例如:
-
Customise date boundary behaviour and tap behaviour
CleanCalendar( enableDenseViewForDates: true, enableDenseSplashForDates: true, )
-
Disable and hide different types of dates
CleanCalendar( leadingTrailingDatesProperties: DatesProperties( disable: true, hide: true, ), )
-
Customise dates look by changing its properties
CleanCalendar( currentDateProperties: DatesProperties( datesDecoration: DatesDecoration( datesBorderRadius: 1000, datesBackgroundColor: Colors.lightGreen.shade100, datesBorderColor: Colors.green, datesTextColor: Colors.black, ), ), generalDatesProperties: DatesProperties( datesDecoration: DatesDecoration( datesBorderRadius: 1000, datesBackgroundColor: Colors.lightGreen.shade100, datesBorderColor: Colors.blue.shade100, datesTextColor: Colors.black, ), ), )
-
Customise weekdays header by changing its properties
CleanCalendar( weekdaysProperties: WeekdaysProperties( generalWeekdaysDecoration: WeekdaysDecoration(weekdayTextColor: Colors.red), sundayDecoration: WeekdaysDecoration( weekdayTextColor: Colors.green, weekdayTextStyle: Theme.of(context).textTheme.headlineMedium, ), saturdayDecoration: WeekdaysDecoration( weekdayTextColor: Colors.green, weekdayTextStyle: Theme.of(context).textTheme.headlineMedium, ), ), )
-
Customise navigator header by changing its properties
CleanCalendar( headerProperties: HeaderProperties( monthYearDecoration: MonthYearDecoration( monthYearTextColor: Colors.amber, monthYearTextStyle: Theme.of(context).textTheme.labelMedium, ), navigatorDecoration: NavigatorDecoration( navigatorResetButtonIcon: Icon(Icons.restart_alt, color: Colors.amber), navigateLeftButtonIcon: Icon(Icons.arrow_circle_left, color: Colors.amber), navigateRightButtonIcon: Icon(Icons.arrow_circle_right, color: Colors.amber), ), ), )
Date Selection
Multiple date selection with customization
CleanCalendar(
enableDenseViewForDates: true,
enableDenseSplashForDates: true,
datesForStreaks: [DateTime.now().subtract(Duration(days: 5)), ...],
dateSelectionMode: DatePickerSelectionMode.singleOrMultiple,
onSelectedDates: (List<DateTime> value) {
if (selectedDates.contains(value.first)) {
selectedDates.remove(value.first);
} else {
selectedDates.add(value.first);
}
setState(() {});
},
selectedDates: selectedDates,
selectedDatesProperties: DatesProperties(
datesDecoration: DatesDecoration(datesBorderRadius: 1000),
),
)
Single date selection
只需修改上述代码中的onSelectedDates
逻辑以存储最新的单个日期作为选中日期。
Changing calendar view type
CleanCalendar(
datePickerCalendarView: DatePickerCalendarView.weekView,
)
Changing calendar start weekday
CleanCalendar(
startWeekday: WeekDay.monday,
)
Changing weekday and month symbols
CleanCalendar(
weekdaysSymbol: const Weekdays(sunday: "s", monday: "m", tuesday: "t", wednesday: "w", thursday: "t", friday: "f", saturday: "s"),
monthsSymbol: const Months(january: "Jan", february: "Feb", march: "Mar", april: "Apr", may: "May", june: "Jun", july: "Jul", august: "Aug", september: "Sep", october: "Oct", november: "Nov", december: "Dec"),
)
Accessing selected dates
CleanCalendar(
onSelectedDates: (List<DateTime> selectedDates) {
print(selectedDates);
},
)
Providing pre-selected dates
CleanCalendar(
selectedDates: [DateTime(2022, 8, 6), DateTime(2022, 8, 9), DateTime(2022, 8, 11)],
)
Providing start and end dates
CleanCalendar(
startDateOfCalendar: DateTime(2022,6,5),
endDateOfCalendar: DateTime(2022,10,15),
)
Providing initial month view for calendar
CleanCalendar(
initialViewMonthDateTime: DateTime(2022,9,5),
)
Providing current date for calendar
CleanCalendar(
currentDateOfCalendar: DateTime(2022,9,5),
)
Listening for calendar view week or month change
CleanCalendar(
onCalendarViewDate: (DateTime calendarViewDate) {
print(calendarViewDate);
},
)
Additional information
支持计划包括但不限于:
- 完整文档。
- 禁用用户交互选项。
- 更多自定义和预设模板。
- 更多日历视图类型。
- 日期选择选项如范围和多个范围选择。
- 年、月或日视图选择。
- 事件风格日期显示。
- 低性能设备优化模式。
如果您认为还有其他重要的功能未被提及,请告知我。
更多关于Flutter日历管理插件clean_calendar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter日历管理插件clean_calendar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用clean_calendar
插件进行日历管理的代码示例。这个插件通常用于显示和选择日期,非常适合需要日历功能的应用。
首先,你需要在你的pubspec.yaml
文件中添加clean_calendar
依赖:
dependencies:
flutter:
sdk: flutter
clean_calendar: ^x.y.z # 替换为最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,是一个简单的示例,展示如何使用clean_calendar
来显示一个日历并处理日期选择事件。
1. 导入必要的包
在你的Dart文件中,导入clean_calendar
包:
import 'package:flutter/material.dart';
import 'package:clean_calendar/clean_calendar.dart';
2. 创建主要的Widget
在你的主文件中(通常是main.dart
),创建一个包含CleanCalendar
的Widget:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Clean Calendar Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: CalendarScreen(),
);
}
}
class CalendarScreen extends StatefulWidget {
@override
_CalendarScreenState createState() => _CalendarScreenState();
}
class _CalendarScreenState extends State<CalendarScreen> {
DateTime? selectedDate;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Clean Calendar Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Selected Date: ${selectedDate != null ? selectedDate!.toLocal().toDateString() : 'None'}',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Expanded(
child: CleanCalendar(
initialSelectedDate: DateTime.now(),
onDateSelected: (date) {
setState(() {
selectedDate = date;
});
},
// 其他可选参数
// currentMonth: DateTime.now(), // 设置当前月份
// selectedDayTextStyle: TextStyle(color: Colors.red), // 设置选中日期的文本样式
// todayTextStyle: TextStyle(color: Colors.blue), // 设置今天日期的文本样式
// weekDays: WeekDays.all, // 设置显示哪些星期几
// ...
),
),
],
),
),
);
}
}
3. 运行应用
现在,你可以运行你的Flutter应用,应该会看到一个包含日历的页面,你可以点击日期来选择并显示选中的日期。
注意事项
- 确保你使用的是最新版本的
clean_calendar
插件,因为API可能会随着版本更新而变化。 - 根据你的需求,你可以自定义
CleanCalendar
的其他参数,比如设置特定的日期范围、禁用某些日期等。
这个示例展示了基本的日历显示和日期选择功能,你可以根据实际需求进一步扩展和优化。