mirror of
https://github.com/jagandeepbrar/lunasea.git
synced 2026-08-31 12:42:34 +00:00
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:
@@ -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
|
||||
|
||||
|
||||
@@ -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)),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -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:
|
||||
|
||||
98
pubspec.yaml
98
pubspec.yaml
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user