LCOV - code coverage report
Current view: top level - src - range_picker.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 0 32 0.0 %
Date: 2022-02-12 14:49:12 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:flutter/material.dart';
       2             : import 'package:flutter/rendering.dart';
       3             : 
       4             : import 'date_period.dart';
       5             : import 'date_picker_keys.dart';
       6             : import 'day_based_changable_picker.dart';
       7             : import 'day_picker_selection.dart';
       8             : import 'day_type.dart';
       9             : import 'i_selectable_picker.dart';
      10             : import 'styles/date_picker_styles.dart';
      11             : import 'styles/event_decoration.dart';
      12             : import 'styles/layout_settings.dart';
      13             : import 'typedefs.dart';
      14             : import 'utils.dart';
      15             : 
      16             : /// Date picker for range selection.
      17             : class RangePicker extends StatelessWidget {
      18             :   /// Creates a range picker.
      19           0 :   RangePicker({
      20             :     Key? key,
      21             :     required DatePeriod selectedPeriod,
      22             :     required DateTime firstDate,
      23             :     required DateTime lastDate,
      24             :     required this.onChanged,
      25             :     DateTime? initiallyShowDate,
      26             :     this.datePickerLayoutSettings = const DatePickerLayoutSettings(),
      27             :     this.datePickerStyles,
      28             :     this.datePickerKeys,
      29             :     this.selectableDayPredicate,
      30             :     this.onSelectionError,
      31             :     this.eventDecorationBuilder,
      32             :     this.onMonthChanged,
      33           0 :   })  : firstDate = DatePickerUtils.startOfTheDay(firstDate),
      34           0 :         lastDate = DatePickerUtils.endOfTheDay(lastDate),
      35           0 :         selectedPeriod = DatePeriod(
      36           0 :             DatePickerUtils.startOfTheDay(selectedPeriod.start),
      37           0 :             DatePickerUtils.endOfTheDay(selectedPeriod.end)),
      38             :         initiallyShowDate = initiallyShowDate == null
      39             :             ? null
      40           0 :             : DatePickerUtils.startOfTheDay(initiallyShowDate),
      41           0 :         super(key: key) {
      42           0 :     assert(!this.firstDate.isAfter(this.lastDate));
      43           0 :     assert(!this.lastDate.isBefore(this.firstDate));
      44           0 :     assert(!this.selectedPeriod.start.isBefore(this.firstDate));
      45           0 :     assert(!this.selectedPeriod.end.isAfter(this.lastDate));
      46           0 :     assert(this.initiallyShowDate == null ||
      47           0 :         !this.initiallyShowDate!.isAfter(this.lastDate));
      48           0 :     assert(this.initiallyShowDate == null ||
      49           0 :         !this.initiallyShowDate!.isBefore(this.firstDate));
      50             :   }
      51             : 
      52             :   /// The currently selected period.
      53             :   ///
      54             :   /// This date is highlighted in the picker.
      55             :   final DatePeriod selectedPeriod;
      56             : 
      57             :   /// Called when the user picks a week.
      58             :   final ValueChanged<DatePeriod> onChanged;
      59             : 
      60             :   /// Called when the error was thrown after user selection.
      61             :   /// (e.g. when user selected a range with one or more days
      62             :   /// that can't be selected)
      63             :   final OnSelectionError? onSelectionError;
      64             : 
      65             :   /// The earliest date the user is permitted to pick.
      66             :   final DateTime firstDate;
      67             : 
      68             :   /// The latest date the user is permitted to pick.
      69             :   final DateTime lastDate;
      70             : 
      71             :   /// Date for defining what month should be shown initially.
      72             :   ///
      73             :   /// In case of null start of the [selectedPeriod] will be shown.
      74             :   final DateTime? initiallyShowDate;
      75             : 
      76             :   /// Layout settings what can be customized by user
      77             :   final DatePickerLayoutSettings datePickerLayoutSettings;
      78             : 
      79             :   /// Some keys useful for integration tests
      80             :   final DatePickerKeys? datePickerKeys;
      81             : 
      82             :   /// Styles what can be customized by user
      83             :   final DatePickerRangeStyles? datePickerStyles;
      84             : 
      85             :   /// Function returns if day can be selected or not.
      86             :   final SelectableDayPredicate? selectableDayPredicate;
      87             : 
      88             :   /// Builder to get event decoration for each date.
      89             :   ///
      90             :   /// All event styles are overridden by selected styles
      91             :   /// except days with dayType is [DayType.notSelected].
      92             :   final EventDecorationBuilder? eventDecorationBuilder;
      93             : 
      94             :   /// Called when the user changes the month.
      95             :   /// New DateTime object represents first day of new month and 00:00 time.
      96             :   final ValueChanged<DateTime>? onMonthChanged;
      97             : 
      98           0 :   @override
      99             :   Widget build(BuildContext context) {
     100           0 :     ISelectablePicker<DatePeriod> rangeSelectablePicker = RangeSelectable(
     101           0 :         selectedPeriod, firstDate, lastDate,
     102           0 :         selectableDayPredicate: selectableDayPredicate);
     103             : 
     104           0 :     return DayBasedChangeablePicker<DatePeriod>(
     105             :       selectablePicker: rangeSelectablePicker,
     106           0 :       selection: DayPickerRangeSelection(selectedPeriod),
     107           0 :       firstDate: firstDate,
     108           0 :       lastDate: lastDate,
     109           0 :       initiallyShownDate: initiallyShowDate,
     110           0 :       onChanged: onChanged,
     111           0 :       onSelectionError: onSelectionError,
     112           0 :       datePickerLayoutSettings: datePickerLayoutSettings,
     113           0 :       datePickerStyles: datePickerStyles ?? DatePickerRangeStyles(),
     114           0 :       datePickerKeys: datePickerKeys,
     115           0 :       eventDecorationBuilder: eventDecorationBuilder,
     116           0 :       onMonthChanged: onMonthChanged,
     117             :     );
     118             :   }
     119             : }

Generated by: LCOV version 1.15