fix(Calendar): Upgrade to table_calendar 3.0.0, Set calendar range bounds (#435)

* chore(flutter): Update table_calendar to 3.0.0
* fix(Dashboard): Update calendar to support table_calendar 3.0.0, set bounds for calendar
* chore: Update CHANGELOG.md
This commit is contained in:
Jagandeep Brar
2021-04-19 19:22:05 -05:00
committed by GitHub
parent 26a30420e8
commit 6d81e2371f
4 changed files with 120 additions and 90 deletions

View File

@@ -2,6 +2,13 @@
## v5.0.0 (50000018)
#### TWEAKS
- `[Dashboard]` (Calendar) Set bounds to calendar
- `[Dashboard]` (Calendar) Made the styling for calendar slightly more consistent
#### FIXES
- `[Dashboard]` (Calendar) Stored current date would not update on date change
#### PLATFORM-SPECIFIC
- `[macOS]` (fix) Utilize native filesystem dialogs for selecting and saving files

View File

@@ -4,6 +4,7 @@ import 'package:intl/intl.dart';
import 'package:lunasea/core.dart';
import 'package:lunasea/modules/dashboard.dart';
import 'package:table_calendar/table_calendar.dart';
import 'package:simple_gesture_detector/simple_gesture_detector.dart';
class DashboardCalendarWidget extends StatefulWidget {
final Map<DateTime, List> events;
@@ -20,6 +21,8 @@ class DashboardCalendarWidget extends StatefulWidget {
class _State extends State<DashboardCalendarWidget> {
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
DateTime _today;
DateTime _selected;
CalendarFormat _calendarFormat;
final TextStyle dayTileStyle = TextStyle(
color: Colors.white,
@@ -43,26 +46,22 @@ class _State extends State<DashboardCalendarWidget> {
);
List _selectedEvents;
CalendarController _calendarController;
@override
void initState() {
super.initState();
_calendarController = CalendarController();
_today = context.read<DashboardState>().today.lunaFloor;
_selectedEvents = widget.events[_today] ?? [];
DateTime _floored = context.read<DashboardState>().today.lunaFloor;
_selected = _floored;
_today = _floored;
_selectedEvents = widget.events[_floored] ?? [];
_calendarFormat = (DashboardDatabaseValue.CALENDAR_STARTING_SIZE.data as CalendarStartingSize).data;
}
@override
void dispose() {
_calendarController.dispose();
super.dispose();
}
void _onDaySelected(DateTime day, List events, List _) {
void _onDaySelected(DateTime selected, DateTime focused) {
HapticFeedback.selectionClick();
setState(() {
_selectedEvents = events;
if(mounted) setState(() {
_selected = selected.lunaFloor;
_selectedEvents = widget.events[selected.lunaFloor];
});
}
@@ -97,44 +96,70 @@ class _State extends State<DashboardCalendarWidget> {
DashboardDatabaseValue.CALENDAR_STARTING_SIZE.key,
]),
builder: (context, box, _) {
DateTime firstDay = context.watch<DashboardState>().today.subtract(
Duration(days: DashboardDatabaseValue.CALENDAR_DAYS_PAST.data),
);
DateTime lastDay = context.watch<DashboardState>().today.add(
Duration(days: DashboardDatabaseValue.CALENDAR_DAYS_FUTURE.data),
);
return SafeArea(
child: LunaCard(
context: context,
child: Padding(
child: TableCalendar(
rowHeight: 48.0,
calendarController: _calendarController,
events: widget.events,
headerVisible: false,
startDay: DateTime.now().subtract(Duration(days: DashboardDatabaseValue.CALENDAR_DAYS_PAST.data)),
endDay: DateTime.now().add(Duration(days: DashboardDatabaseValue.CALENDAR_DAYS_FUTURE.data)),
startingDayOfWeek: (DashboardDatabaseValue.CALENDAR_STARTING_DAY.data as CalendarStartingDay).data,
calendarStyle: CalendarStyle(
selectedColor: LunaColours.accent.withOpacity(0.25),
markersMaxAmount: 1,
markersColor: LunaColours.accent,
weekendStyle: dayTileStyle,
weekdayStyle: dayTileStyle,
unavailableStyle: unavailableTitleStyle,
outsideStyle: outsideDayTileStyle,
selectedStyle: dayTileStyle,
outsideWeekendStyle: outsideDayTileStyle,
renderDaysOfWeek: true,
highlightToday: true,
todayColor: LunaColours.primary,
todayStyle: dayTileStyle,
outsideDaysVisible: false,
rangeSelectionMode: RangeSelectionMode.disabled,
simpleSwipeConfig: SimpleSwipeConfig(
verticalThreshold: 10.0,
),
focusedDay: _selected,
firstDay: firstDay,
lastDay: lastDay,
//events: widget.events,
headerVisible: false,
startingDayOfWeek: (DashboardDatabaseValue.CALENDAR_STARTING_DAY.data as CalendarStartingDay).data,
selectedDayPredicate: (date) => date?.lunaFloor == _selected?.lunaFloor,
calendarStyle: CalendarStyle(
markersMaxCount: 1,
isTodayHighlighted: true,
outsideDaysVisible: false,
selectedDecoration: BoxDecoration(
color: LunaColours.accent.withOpacity(0.20),
shape: BoxShape.circle,
),
markerDecoration: BoxDecoration(
color: LunaColours.accent,
shape: BoxShape.circle,
),
todayDecoration: BoxDecoration(
color: LunaColours.primary.withOpacity(0.60),
shape: BoxShape.circle,
),
weekendTextStyle: dayTileStyle,
defaultTextStyle: dayTileStyle,
disabledTextStyle: unavailableTitleStyle,
outsideTextStyle: outsideDayTileStyle,
selectedTextStyle: TextStyle(
color: LunaColours.accent,
fontWeight: LunaUI.FONT_WEIGHT_BOLD,
),
todayTextStyle: dayTileStyle,
),
onFormatChanged: (format) => setState(() => _calendarFormat = format),
daysOfWeekStyle: DaysOfWeekStyle(
weekendStyle: weekdayTitleStyle,
weekdayStyle: weekdayTitleStyle,
),
initialCalendarFormat: (DashboardDatabaseValue.CALENDAR_STARTING_SIZE.data as CalendarStartingSize).data,
availableCalendarFormats: const {
CalendarFormat.month : 'Month', CalendarFormat.twoWeeks : '2 Weeks', CalendarFormat.week : 'Week'},
eventLoader: (date) => widget.events[date.lunaFloor],
calendarFormat: _calendarFormat,
availableCalendarFormats: {
CalendarFormat.month : 'Month',
CalendarFormat.twoWeeks : '2 Weeks',
CalendarFormat.week : 'Week',
},
onDaySelected: _onDaySelected,
),
padding: EdgeInsets.only(top: 16.0, bottom: 8.0),
padding: LunaUI.MARGIN_DEFAULT.subtract(EdgeInsets.symmetric(horizontal: 6.0)),
),
),
);

View File

@@ -1030,7 +1030,7 @@ packages:
name: simple_gesture_detector
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.6"
version: "0.2.0"
sky_engine:
dependency: transitive
description: flutter
@@ -1112,7 +1112,7 @@ packages:
name: table_calendar
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.3"
version: "3.0.0"
tautulli:
dependency: "direct main"
description:

View File

@@ -8,62 +8,60 @@ environment:
dependencies:
flutter:
sdk: flutter
badges: ^1.2.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
cloud_firestore: ^1.0.5 # ANDROID IOS MACOS WEB
connectivity_plus: ^1.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
convert: ^3.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
dio: ^4.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
easy_localization: ^3.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
encrypt: ^5.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
expandable: ^5.0.1 # ANDROID IOS LINUX MACOS WEB WINDOWS
file_picker: ^3.0.1 # ANDROID IOS WEB
file_selector_macos: ^0.0.4 # MACOS
file_selector_platform_interface: ^2.0.2 # ANDROID IOS LINUX MACOS WEB WINDOWS
firebase_analytics: ^8.0.0 # ANDROID IOS WEB
firebase_auth: ^1.1.0 # ANDROID IOS MACOS WEB
firebase_core: ^1.0.3 # ANDROID IOS MACOS WEB
firebase_crashlytics: ^2.0.0 # ANDROID IOS MACOS
firebase_messaging: ^9.1.1 # ANDROID IOS MACOS WEB
firebase_storage: ^8.0.3 # ANDROID IOS MACOS WEB
flash: ^1.5.1 # ANDROID IOS LINUX MACOS WEB WINDOWS
fluro: ^2.0.3 # ANDROID IOS LINUX MACOS WEB WINDOWS
flutter_spinkit: ^5.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
fl_chart: ^0.35.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
badges: ^1.2.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
cloud_firestore: ^1.0.5 # ANDROID IOS MACOS WEB
connectivity_plus: ^1.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
convert: ^3.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
dio: ^4.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
easy_localization: ^3.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
encrypt: ^5.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
expandable: ^5.0.1 # ANDROID IOS LINUX MACOS WEB WINDOWS
file_picker: ^3.0.1 # ANDROID IOS WEB
file_selector_macos: ^0.0.4 # MACOS
file_selector_platform_interface: ^2.0.2 # ANDROID IOS LINUX MACOS WEB WINDOWS
firebase_analytics: ^8.0.0 # ANDROID IOS WEB
firebase_auth: ^1.1.0 # ANDROID IOS MACOS WEB
firebase_core: ^1.0.3 # ANDROID IOS MACOS WEB
firebase_crashlytics: ^2.0.0 # ANDROID IOS MACOS
firebase_messaging: ^9.1.1 # ANDROID IOS MACOS WEB
firebase_storage: ^8.0.3 # ANDROID IOS MACOS WEB
flash: ^1.5.1 # ANDROID IOS LINUX MACOS WEB WINDOWS
fluro: ^2.0.3 # ANDROID IOS LINUX MACOS WEB WINDOWS
flutter_spinkit: ^5.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
fl_chart: ^0.35.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
# font_awesome_flutter: # ANDROID IOS LINUX MACOS WEB WINDOWS
# path: vendor/font_awesome_flutter
google_nav_bar: ^5.0.3 # ANDROID IOS LINUX MACOS WEB WINDOWS
hive: ^2.0.3 # ANDROID IOS LINUX MACOS WEB WINDOWS
hive_flutter: ^1.0.0 # ANDROID IOS LINUX MACOS WINDOWS
in_app_purchase: ^0.5.2 # ANDROID IOS
infinite_scroll_pagination: ^3.0.1 # ANDROID IOS LINUX MACOS WEB WINDOWS
intl: ^0.17.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
modal_bottom_sheet: ^2.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
network_info_plus: ^1.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
overseerr: ^0.0.1-pre.5 # ANDROID IOS LINUX MACOS WEB WINDOWS
package_info_plus: ^1.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
path_provider: ^2.0.1 # ANDROID IOS LINUX MACOS WINDOWS
percent_indicator: ^3.0.1 # ANDROID IOS LINUX MACOS WEB WINDOWS
provider: ^5.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
quick_actions: ^0.6.0 # ANDROID IOS
radarr: ^2.1.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
# radarr:
# path: /Users/jagandeepbrar/Git/Packages/radarr
share_plus: ^2.0.1 # ANDROID IOS LINUX MACOS WEB WINDOWS
sonarr: ^2.0.1 # ANDROID IOS LINUX MACOS WEB WINDOWS
stack_trace: ^1.10.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
supercharged: ^2.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
table_calendar: ^2.3.3 # ANDROID IOS LINUX MACOS WEB WINDOWS
tautulli: ^2.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
tuple: ^2.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
url_launcher: ^6.0.3 # ANDROID IOS LINUX MACOS WEB WINDOWS
uuid: ^3.0.4 # ANDROID IOS LINUX MACOS WEB WINDOWS
wake_on_lan: ^2.0.1+1 # ANDROID IOS LINUX MACOS WINDOWS
window_size:
google_nav_bar: ^5.0.3 # ANDROID IOS LINUX MACOS WEB WINDOWS
hive: ^2.0.3 # ANDROID IOS LINUX MACOS WEB WINDOWS
hive_flutter: ^1.0.0 # ANDROID IOS LINUX MACOS WINDOWS
in_app_purchase: ^0.5.2 # ANDROID IOS
infinite_scroll_pagination: ^3.0.1 # ANDROID IOS LINUX MACOS WEB WINDOWS
intl: ^0.17.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
modal_bottom_sheet: ^2.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
network_info_plus: ^1.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
overseerr: ^0.0.1-pre.5 # ANDROID IOS LINUX MACOS WEB WINDOWS
package_info_plus: ^1.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
path_provider: ^2.0.1 # ANDROID IOS LINUX MACOS WINDOWS
percent_indicator: ^3.0.1 # ANDROID IOS LINUX MACOS WEB WINDOWS
provider: ^5.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
quick_actions: ^0.6.0 # ANDROID IOS
radarr: ^2.1.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
share_plus: ^2.0.1 # ANDROID IOS LINUX MACOS WEB WINDOWS
sonarr: ^2.0.1 # ANDROID IOS LINUX MACOS WEB WINDOWS
stack_trace: ^1.10.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
supercharged: ^2.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
table_calendar: ^3.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
tautulli: ^2.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
tuple: ^2.0.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
url_launcher: ^6.0.3 # ANDROID IOS LINUX MACOS WEB WINDOWS
uuid: ^3.0.4 # ANDROID IOS LINUX MACOS WEB WINDOWS
wake_on_lan: ^2.0.1+1 # ANDROID IOS LINUX MACOS WINDOWS
window_size: # LINUX MACOS WINDOWS
git:
url: git://github.com/google/flutter-desktop-embedding.git
path: plugins/window_size
ref: 57a2cd88486105d3d813583339eb0e23c9bfd6d2
xml: ^5.1.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
xml: ^5.1.0 # ANDROID IOS LINUX MACOS WEB WINDOWS
dev_dependencies:
build_runner: ^1.12.2