Date time updates 51/29451/3
authorLisandro Pérez Meyer <lpmeyer@ics.com>
Mon, 20 Nov 2023 20:47:26 +0000 (17:47 -0300)
committerLisandro Perez Meyer <lpmeyer@ics.com>
Tue, 21 Nov 2023 12:16:40 +0000 (12:16 +0000)
Original from Sabin Sajeevan <ssajeevan@ics.com>

Bug-AGL: SPEC-4971

Change-Id: I7a961e57715fdbf8b05f54dfcf8e56159cadd068
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
13 files changed:
lib/data/data_providers/app_provider.dart
lib/data/data_providers/datetime_notifier.dart [deleted file]
lib/data/data_providers/time_notifier.dart
lib/data/models/date_time.dart [deleted file]
lib/presentation/common_widget/custom_bottom_bar.dart
lib/presentation/router/routes/routes.dart
lib/presentation/screens/clock/clock.dart
lib/presentation/screens/settings/settings_screens/date_time/date/date_screen.dart
lib/presentation/screens/settings/settings_screens/date_time/date/select_year.dart [new file with mode: 0644]
lib/presentation/screens/settings/settings_screens/date_time/date_time_screen.dart
lib/presentation/screens/settings/settings_screens/date_time/time/time_screen.dart
pubspec.lock
pubspec.yaml

index 80416a4..f6fb1ad 100644 (file)
@@ -1,11 +1,9 @@
-import 'package:flutter_ics_homescreen/data/data_providers/datetime_notifier.dart';
 import 'package:flutter_ics_homescreen/data/data_providers/hybrid_notifier.dart';
 import 'package:flutter_ics_homescreen/data/data_providers/signal_notifier.dart';
 import 'package:flutter_ics_homescreen/data/data_providers/time_notifier.dart';
 import 'package:flutter_ics_homescreen/data/data_providers/units_notifier.dart';
 import 'package:flutter_ics_homescreen/data/data_providers/audio_notifier.dart';
 import 'package:flutter_ics_homescreen/data/data_providers/users_notifier.dart';
-import 'package:flutter_ics_homescreen/data/models/date_time.dart';
 import 'package:flutter_ics_homescreen/export.dart';
 
 import '../models/users.dart';
@@ -33,7 +31,8 @@ enum AppState {
   tempUnit,
   clock,
   date,
-  time
+  time,
+  year
 }
 
 final appProvider = StateProvider<AppState>((ref) => AppState.splash);
@@ -55,10 +54,6 @@ final usersProvider = StateNotifierProvider<UsersNotifier, Users>((ref) {
   return UsersNotifier(Users.initial());
 });
 
-final dateTimeStateProvider =
-    StateNotifierProvider<DateTimeNotifier, DateAndTime>((ref) {
-  return DateTimeNotifier(DateAndTime.initial());
-});
 final hybridtateProvider = StateNotifierProvider<HybridNotifier, Hybrid>((ref) {
   return HybridNotifier(const Hybrid.initial());
 });
diff --git a/lib/data/data_providers/datetime_notifier.dart b/lib/data/data_providers/datetime_notifier.dart
deleted file mode 100644 (file)
index 6947a34..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-import 'package:flutter_ics_homescreen/data/models/date_time.dart';
-import 'package:flutter_ics_homescreen/export.dart';
-
-class DateTimeNotifier extends StateNotifier<DateAndTime> {
-  DateTimeNotifier(super.state);
-
-  void setDate(String newVal) {
-    state = state.copyWith(date: newVal);
-  }
-
-  void setTime(String newVal) {
-    state = state.copyWith(time: newVal);
-  }
-}
index 9737b2b..c290526 100644 (file)
@@ -11,6 +11,8 @@ class CurrentTimeNotifier extends StateNotifier<DateTime> {
   }
 
   bool _hasInitialized = false;
+  int? selectedYear;
+  bool isYearChanged = false;
 
   void _initializeTimer() {
     Timer.periodic(const Duration(seconds: 1), (timer) {
@@ -20,5 +22,6 @@ class CurrentTimeNotifier extends StateNotifier<DateTime> {
 
   void setCurrentTime(DateTime newTime) {
     state = newTime;
+    selectedYear = newTime.year;
   }
 }
diff --git a/lib/data/models/date_time.dart b/lib/data/models/date_time.dart
deleted file mode 100644 (file)
index 62d7743..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-import 'dart:convert';
-
-import 'package:flutter_ics_homescreen/export.dart';
-import 'package:intl/intl.dart';
-
-@immutable
-class DateAndTime {
-  final String date;
-  final String time;
-  const DateAndTime({
-    required this.date,
-    required this.time,
-  });
-
-  DateAndTime.initial()
-      : date = DateFormat().add_yMMMMd().format(DateTime.now()),
-        time = DateFormat('hh:mm a').format(DateTime.now());
-  DateAndTime copyWith({
-    String? date,
-    String? time,
-  }) {
-    return DateAndTime(
-      date: date ?? this.date,
-      time: time ?? this.time,
-    );
-  }
-
-  Map<String, dynamic> toMap() {
-    return {
-      'date': date,
-      'time': time,
-    };
-  }
-
-  factory DateAndTime.fromMap(Map<String, dynamic> map) {
-    return DateAndTime(
-      date: map['date'],
-      time: map['time'],
-    );
-  }
-
-  String toJson() => json.encode(toMap());
-
-  factory DateAndTime.fromJson(String source) =>
-      DateAndTime.fromMap(json.decode(source));
-
-  @override
-  String toString() => 'DateAndTime(date: $date, time: $time)';
-
-  @override
-  bool operator ==(Object other) {
-    if (identical(this, other)) return true;
-
-    return other is DateAndTime && other.date == date && other.time == time;
-  }
-
-  @override
-  int get hashCode => date.hashCode ^ time.hashCode;
-}
index 13084c0..64684e9 100644 (file)
@@ -44,7 +44,7 @@ class CustomBottomBarState extends ConsumerState<CustomBottomBar> {
     setState(() {
       selectedNav = title;
     });
-
+    ref.read(currentTimeProvider.notifier).isYearChanged = false;
     ref.read(appProvider.notifier).update((state) => state = status);
   }
 
@@ -60,7 +60,6 @@ class CustomBottomBarState extends ConsumerState<CustomBottomBar> {
                     mainAxisSize: MainAxisSize.min,
                     children: [
                       Container(
-                        
                         margin: const EdgeInsets.symmetric(
                           horizontal: 2,
                         ),
index d6d74c4..57e50d2 100644 (file)
@@ -1,4 +1,5 @@
 import 'package:flutter_ics_homescreen/presentation/screens/settings/settings_screens/date_time/date/date_screen.dart';
+import 'package:flutter_ics_homescreen/presentation/screens/settings/settings_screens/date_time/date/select_year.dart';
 import 'package:flutter_ics_homescreen/presentation/screens/settings/settings_screens/date_time/time/time_screen.dart';
 
 import '../../../../export.dart';
@@ -52,5 +53,7 @@ List<Page<dynamic>> onGenerateAppViewPages(
       return [DatePage.page()];
     case AppState.time:
       return [TimePage.page()];
+    case AppState.year:
+      return [SelectYearPage.page()];
   }
 }
index f0858e7..ec419d6 100644 (file)
@@ -1,6 +1,5 @@
-import 'dart:async';
-
 import 'package:flutter_ics_homescreen/export.dart';
+import 'package:intl/intl.dart';
 
 class ClockPage extends ConsumerWidget {
   const ClockPage({super.key});
@@ -10,6 +9,7 @@ class ClockPage extends ConsumerWidget {
   @override
   Widget build(BuildContext context, WidgetRef ref) {
     double clockSize = MediaQuery.sizeOf(context).width * 0.51;
+    final currentTime = ref.watch(currentTimeProvider);
 
     return Column(
       crossAxisAlignment: CrossAxisAlignment.stretch,
@@ -66,8 +66,9 @@ class ClockPage extends ConsumerWidget {
                         ),
                       ),
                     ),
-                    child: const AnalogClock(
+                    child: AnalogClock(
                       dialColor: null,
+                      dateTime: currentTime,
                       markingColor: null,
                       hourNumberColor: null,
                       secondHandColor: AGLDemoColors.jordyBlueColor,
@@ -96,47 +97,21 @@ class ClockPage extends ConsumerWidget {
   }
 }
 
-class RealTimeClock extends StatefulWidget {
+class RealTimeClock extends ConsumerStatefulWidget {
   const RealTimeClock({super.key});
 
   @override
-  State<RealTimeClock> createState() => _RealTimeClockState();
+  RealTimeClockState createState() => RealTimeClockState();
 }
 
-class _RealTimeClockState extends State<RealTimeClock> {
+class RealTimeClockState extends ConsumerState<RealTimeClock> {
   late String _timeString;
-  late Timer _timer;
-
-  @override
-  void initState() {
-    _timeString = _formatDateTime(DateTime.now());
-    _timer =
-        Timer.periodic(const Duration(seconds: 1), (Timer t) => _getTime());
-    super.initState();
-  }
-
-  @override
-  void dispose() {
-    _timer.cancel();
-    super.dispose();
-  }
-
-  void _getTime() {
-    final DateTime now = DateTime.now();
-    final String formattedDateTime = _formatDateTime(now);
-    if (mounted) {
-      setState(() {
-        _timeString = formattedDateTime;
-      });
-    }
-  }
-
-  String _formatDateTime(DateTime dateTime) {
-    return "${dateTime.hour}:${dateTime.minute.toString().padLeft(2, '0')}";
-  }
+  DateFormat dateFormat = DateFormat('hh:mm a');
 
   @override
   Widget build(BuildContext context) {
+    final currentTime = ref.watch(currentTimeProvider);
+    _timeString = dateFormat.format(currentTime);
     return Text(
       _timeString,
       style: GoogleFonts.brunoAce(color: Colors.white, fontSize: 128),
index 6802ed0..9f40a76 100644 (file)
@@ -1,5 +1,6 @@
+import 'package:flutter_calendar_carousel/classes/event.dart';
+import 'package:flutter_calendar_carousel/flutter_calendar_carousel.dart';
 import 'package:flutter_ics_homescreen/export.dart';
-import 'package:calendar_date_picker2/calendar_date_picker2.dart';
 import 'package:intl/intl.dart';
 
 class DatePage extends ConsumerWidget {
@@ -14,6 +15,7 @@ class DatePage extends ConsumerWidget {
           title: 'Date',
           hasBackButton: true,
           onPressed: () {
+            ref.read(currentTimeProvider.notifier).isYearChanged = false;
             context.flow<AppState>().update((state) => AppState.dateTime);
           },
         ),
@@ -36,84 +38,170 @@ class DateScreenWidget extends ConsumerStatefulWidget {
 }
 
 class DateScreenWidgetState extends ConsumerState<DateScreenWidget> {
-  late String selectedDate;
+  late DateTime _currentDate;
+  late DateTime _currentDate2;
+  late String _currentMonth;
+  late DateTime _targetDateTime;
 
   onPressed({required String type}) {
     if (type == "confirm") {
-      ref.read(dateTimeStateProvider.notifier).setDate(selectedDate);
+      DateTime selectedeDate = _currentDate.copyWith(
+          day: _currentDate2.day,
+          year: _currentDate2.year,
+          month: _currentDate2.month);
+
+      ref.read(currentTimeProvider.notifier).setCurrentTime(selectedeDate);
       context.flow<AppState>().update((state) => AppState.dateTime);
     } else if (type == "cancel") {
+      ref.read(currentTimeProvider.notifier).isYearChanged = false;
       context.flow<AppState>().update((state) => AppState.dateTime);
     }
   }
 
   @override
   void initState() {
-    selectedDate = ref.read(dateTimeStateProvider).date;
-
+    _currentDate = ref.read(currentTimeProvider);
+    int? selectedYear = ref.read(currentTimeProvider.notifier).selectedYear;
+    if (selectedYear != null &&
+        ref.read(currentTimeProvider.notifier).isYearChanged) {
+      _currentDate = _currentDate.copyWith(year: selectedYear);
+    }
+    _currentDate2 = _currentDate;
+    _currentMonth = DateFormat.yMMM().format(_currentDate);
+    _targetDateTime = _currentDate;
     super.initState();
   }
 
   @override
   Widget build(BuildContext context) {
     Size size = MediaQuery.sizeOf(context);
+
+    final calendarCarouselNoHeader = CalendarCarousel<Event>(
+      onDayPressed: (date, events) {
+        setState(() => _currentDate2 = date);
+      },
+      daysHaveCircularBorder: true,
+      showOnlyCurrentMonthDate: false,
+      weekendTextStyle:
+          const TextStyle(color: AGLDemoColors.periwinkleColor, fontSize: 40),
+      daysTextStyle:
+          const TextStyle(color: AGLDemoColors.periwinkleColor, fontSize: 40),
+      thisMonthDayBorderColor: Colors.transparent,
+      weekFormat: false,
+      height: 720.0,
+      selectedDateTime: _currentDate2,
+      targetDateTime: _targetDateTime,
+      selectedDayButtonColor: AGLDemoColors.buttonFillEnabledColor,
+      customGridViewPhysics: const NeverScrollableScrollPhysics(),
+      showHeader: false,
+      todayTextStyle:
+          const TextStyle(color: AGLDemoColors.periwinkleColor, fontSize: 40),
+      nextDaysTextStyle: const TextStyle(color: Colors.transparent),
+      todayButtonColor: Colors.transparent,
+      selectedDayTextStyle: const TextStyle(color: Colors.white, fontSize: 40),
+      minSelectedDate: _currentDate.subtract(const Duration(days: 10958)),
+      maxSelectedDate: _currentDate.add(const Duration(days: 10958)),
+      prevDaysTextStyle: const TextStyle(
+        color: Colors.transparent,
+      ),
+      weekdayTextStyle: const TextStyle(color: Colors.white, fontSize: 26),
+      todayBorderColor: AGLDemoColors.buttonFillEnabledColor,
+      onCalendarChanged: (DateTime date) {
+        setState(() {
+          _targetDateTime = date;
+          _currentMonth = DateFormat.yMMM().format(_targetDateTime);
+        });
+      },
+      onDayLongPressed: (DateTime date) {},
+    );
+
     return Column(
       crossAxisAlignment: CrossAxisAlignment.stretch,
       children: [
-        CalendarDatePicker2(
-          config: CalendarDatePicker2Config(
-              calendarType: CalendarDatePicker2Type.single,
-              dayBuilder: (
-                  {required date,
-                  decoration,
-                  isDisabled,
-                  isSelected,
-                  isToday,
-                  textStyle}) {
-                Widget? dayWidget;
-                dayWidget = Container(
-                  decoration: decoration,
-                  child: Center(
-                    child: Stack(
-                      alignment: AlignmentDirectional.center,
-                      children: [
-                        Text(
-                          MaterialLocalizations.of(context)
-                              .formatDecimal(date.day),
-                          style: textStyle,
-                        ),
-                      ],
+        Container(
+          margin: const EdgeInsets.only(
+            top: 30.0,
+            bottom: 16.0,
+            left: 16.0,
+            right: 16.0,
+          ),
+          child: Row(
+            mainAxisAlignment: MainAxisAlignment.spaceBetween,
+            children: <Widget>[
+              Flexible(
+                  child: TextButton(
+                onPressed: () {
+                  context.flow<AppState>().update((state) => AppState.year);
+                },
+                child: Row(
+                  mainAxisSize: MainAxisSize.min,
+                  children: [
+                    Text(
+                      _currentMonth,
+                      style: const TextStyle(
+                        color: AGLDemoColors.periwinkleColor,
+                        fontSize: 40.0,
+                      ),
                     ),
+                    const Padding(
+                      padding: EdgeInsets.only(left: 8.0),
+                      child: Icon(
+                        Icons.keyboard_arrow_down,
+                        size: 40,
+                        color: AGLDemoColors.periwinkleColor,
+                      ),
+                    )
+                  ],
+                ),
+              )),
+              Row(
+                children: [
+                  TextButton(
+                    child: const Padding(
+                      padding: EdgeInsets.all(15.0),
+                      child: Icon(
+                        Icons.arrow_back_ios,
+                        size: 30,
+                        color: AGLDemoColors.periwinkleColor,
+                      ),
+                    ),
+                    onPressed: () {
+                      setState(() {
+                        _targetDateTime = DateTime(
+                            _targetDateTime.year, _targetDateTime.month - 1);
+                        _currentMonth =
+                            DateFormat.yMMM().format(_targetDateTime);
+                      });
+                    },
                   ),
-                );
-
-                return dayWidget;
-              },
-              dayTextStyle: const TextStyle(
-                  color: AGLDemoColors.periwinkleColor, fontSize: 40),
-              selectedDayHighlightColor: AGLDemoColors.neonBlueColor,
-              controlsTextStyle: const TextStyle(
-                  color: AGLDemoColors.periwinkleColor, fontSize: 40),
-              weekdayLabelTextStyle: const TextStyle(
-                  color: AGLDemoColors.periwinkleColor, fontSize: 40),
-              controlsHeight: 40,
-              dayTextStylePredicate: ({required date}) {
-                return const TextStyle(
-                    color: AGLDemoColors.periwinkleColor, fontSize: 40);
-              },
-              selectedDayTextStyle:
-                  const TextStyle(color: Colors.white, fontSize: 40)),
-          value: selectedDate == "mm/dd/yyyy"
-              ? []
-              : [DateFormat().add_yMMMMd().parse(selectedDate)],
-          onValueChanged: (dates) {
-            setState(() {
-              selectedDate = DateFormat().add_yMMMMd().format(dates.first!);
-            });
-          },
+                  TextButton(
+                    child: const Padding(
+                      padding: EdgeInsets.all(15.0),
+                      child: Icon(
+                        Icons.arrow_forward_ios,
+                        size: 30,
+                        color: AGLDemoColors.periwinkleColor,
+                      ),
+                    ),
+                    onPressed: () {
+                      setState(() {
+                        _targetDateTime = DateTime(
+                            _targetDateTime.year, _targetDateTime.month + 1);
+                        _currentMonth =
+                            DateFormat.yMMM().format(_targetDateTime);
+                      });
+                    },
+                  ),
+                ],
+              )
+            ],
+          ),
+        ),
+        Container(
+          child: calendarCarouselNoHeader,
         ),
         const SizedBox(
-          height: 120,
+          height: 180,
         ),
         Row(
           mainAxisAlignment: MainAxisAlignment.spaceEvenly,
diff --git a/lib/presentation/screens/settings/settings_screens/date_time/date/select_year.dart b/lib/presentation/screens/settings/settings_screens/date_time/date/select_year.dart
new file mode 100644 (file)
index 0000000..f41a60e
--- /dev/null
@@ -0,0 +1,121 @@
+import 'package:flutter_ics_homescreen/export.dart';
+
+class SelectYearPage extends ConsumerWidget {
+  const SelectYearPage({super.key});
+  static Page<void> page() => const MaterialPage<void>(child: SelectYearPage());
+
+  @override
+  Widget build(BuildContext context, WidgetRef ref) {
+    return Scaffold(
+      body: Column(children: [
+        CommonTitle(
+          title: 'Select Year',
+          hasBackButton: true,
+          onPressed: () {
+            context.flow<AppState>().update((state) => AppState.date);
+          },
+        ),
+        const Expanded(
+          child: Padding(
+              padding:
+                  EdgeInsets.only(top: 50, left: 144, right: 144, bottom: 200),
+              child: SelectYearWidget()),
+        ),
+      ]),
+    );
+  }
+}
+
+class SelectYearWidget extends ConsumerStatefulWidget {
+  const SelectYearWidget({super.key});
+  Page<void> page() => const MaterialPage<void>(child: SelectYearWidget());
+
+  @override
+  SelectYearWidgetState createState() => SelectYearWidgetState();
+}
+
+class SelectYearWidgetState extends ConsumerState<SelectYearWidget> {
+  late int selectedYear;
+  late ScrollController controller;
+
+  onPressed({required int year}) {
+    setState(() {
+      selectedYear = year;
+    });
+    ref.read(currentTimeProvider.notifier).selectedYear = selectedYear;
+    ref.read(currentTimeProvider.notifier).isYearChanged = true;
+    context.flow<AppState>().update((state) => AppState.date);
+  }
+
+  @override
+  void initState() {
+    DateTime currentDate = ref.read(currentTimeProvider);
+    int? selYear = ref.read(currentTimeProvider.notifier).selectedYear;
+
+    if (selYear != null &&
+        ref.read(currentTimeProvider.notifier).isYearChanged) {
+      selectedYear = selYear;
+    } else {
+      selectedYear = currentDate.year;
+    }
+    controller = ScrollController();
+    WidgetsBinding.instance.addPostFrameCallback((_) {
+      final position = controller.position.maxScrollExtent / 2;
+      controller.jumpTo(position);
+    });
+    super.initState();
+  }
+
+  @override
+  void dispose() {
+    controller.dispose();
+    super.dispose();
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return Padding(
+      padding: const EdgeInsets.only(top: 20, bottom: 150),
+      child: SingleChildScrollView(
+        controller: controller,
+        child: Column(
+          crossAxisAlignment: CrossAxisAlignment.stretch,
+          children: [
+            for (var i = selectedYear - 30; i < selectedYear + 30; i++)
+              Column(
+                children: [
+                  ListTile(
+                    contentPadding: const EdgeInsets.symmetric(
+                        vertical: 30, horizontal: 30),
+                    onTap: () {
+                      onPressed(year: i);
+                    },
+                    title: Text(
+                      i.toString(),
+                      style: TextStyle(
+                          color: selectedYear == i
+                              ? Colors.white
+                              : AGLDemoColors.periwinkleColor,
+                          fontSize: 40),
+                    ),
+                    trailing: selectedYear == i
+                        ? const Icon(
+                            Icons.check,
+                            color: AGLDemoColors.neonBlueColor,
+                            size: 40,
+                          )
+                        : null,
+                  ),
+                  const Divider(
+                    color: AGLDemoColors.buttonFillEnabledColor,
+                    height: 1,
+                    thickness: 1,
+                  )
+                ],
+              )
+          ],
+        ),
+      ),
+    );
+  }
+}
index c9a3abf..caf56a1 100644 (file)
@@ -7,8 +7,9 @@ class DateTimePage extends ConsumerWidget {
   static Page<void> page() => const MaterialPage<void>(child: DateTimePage());
   @override
   Widget build(BuildContext context, WidgetRef ref) {
-    final dateTime = ref.watch(dateTimeStateProvider.select((val) => val));
-    DateFormat dateFormat = DateFormat('hh:mm a');
+    DateFormat dateFormat = DateFormat().add_yMMMMd();
+    DateFormat timeFormat = DateFormat('hh:mm a');
+
     final currentime = ref.watch(currentTimeProvider);
 
     return Scaffold(
@@ -29,7 +30,7 @@ class DateTimePage extends ConsumerWidget {
                   UnitsTile(
                       image: "assets/Calendar.svg",
                       title: 'Date',
-                      unitName: dateTime.date,
+                      unitName: dateFormat.format(currentime),
                       hasSwich: false,
                       voidCallback: () async {
                         context
@@ -39,7 +40,7 @@ class DateTimePage extends ConsumerWidget {
                   UnitsTile(
                       image: "assets/Time.svg",
                       title: 'Time',
-                      unitName: dateFormat.format(currentime),
+                      unitName: timeFormat.format(currentime),
                       hasSwich: true,
                       voidCallback: () {
                         context
index de8adb4..8d0a228 100644 (file)
@@ -43,14 +43,17 @@ class TimeScreenWidgetState extends ConsumerState<TimeScreenWidget> {
 
   TextEditingController hourController = TextEditingController();
   TextEditingController minuteController = TextEditingController();
-
+  late DateTime currentTime;
   onPressed({required String type}) {
     if (type == "confirm") {
       if (hourController.text.isNotEmpty && minuteController.text.isNotEmpty) {
         String input =
             '${hourController.text}:${minuteController.text} $selectedMeridien';
         DateTime selectedeDatetime = DateFormat.jm().parse(input);
-
+        selectedeDatetime = selectedeDatetime.copyWith(
+            day: currentTime.day,
+            year: currentTime.year,
+            month: currentTime.month);
         ref
             .read(currentTimeProvider.notifier)
             .setCurrentTime(selectedeDatetime);
@@ -69,7 +72,7 @@ class TimeScreenWidgetState extends ConsumerState<TimeScreenWidget> {
 
   @override
   void initState() {
-    DateTime currentTime = ref.read(currentTimeProvider);
+    currentTime = ref.read(currentTimeProvider);
     String time = DateFormat('hh:mm a').format(currentTime);
 
     List<String> split = time.split(":");
index 896d1bf..f189947 100644 (file)
@@ -41,14 +41,6 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "2.1.1"
-  calendar_date_picker2:
-    dependency: "direct main"
-    description:
-      name: calendar_date_picker2
-      sha256: b91d51b8d0928f9745e0113e86d06b161ac48c52b7530337a3b77283cbc6be27
-      url: "https://pub.dev"
-    source: hosted
-    version: "0.5.3"
   characters:
     dependency: transitive
     description:
@@ -174,6 +166,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "1.0.3"
+  flutter_calendar_carousel:
+    dependency: "direct main"
+    description:
+      name: flutter_calendar_carousel
+      sha256: "8666447f3404d2db45a2523095cab053d4d15c4fd5438d4a893d96ea5637a3aa"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.4.2"
   flutter_lints:
     dependency: "direct dev"
     description:
index fc1f25f..4f2181f 100644 (file)
@@ -47,7 +47,6 @@ dependencies:
   uuid: ^4.1.0
   network_info_plus: ^4.1.0
   yaml: ^3.1.2
-  calendar_date_picker2: ^0.5.3
   gradient_borders: ^1.0.0
   lottie: ^2.7.0
   device_preview: ^1.1.0
@@ -55,6 +54,7 @@ dependencies:
   new_virtual_keyboard: ^0.1.4
   auto_size_text: ^3.0.0
   get_ip_address: ^0.0.6
+  flutter_calendar_carousel: ^2.4.2
 
 
 dev_dependencies: