showAdaptiveDatePicker function

Future<NepaliDateTime?> showAdaptiveDatePicker({
  1. required BuildContext context,
  2. required NepaliDateTime initialDate,
  3. required NepaliDateTime firstDate,
  4. required NepaliDateTime lastDate,
  5. Language language = Language.english,
  6. DateOrder dateOrder = DateOrder.mdy,
  7. DatePickerMode initialDatePickerMode = DatePickerMode.day,
})

Shows nepali date picker of style that adapts as per the platform.

Implementation

Future<NepaliDateTime?> showAdaptiveDatePicker({
  required BuildContext context,
  required NepaliDateTime initialDate,
  required NepaliDateTime firstDate,
  required NepaliDateTime lastDate,
  Language language = Language.english,

  /// Only for iOS
  DateOrder dateOrder = DateOrder.mdy,

  /// Only for Android and Fuchsia
  DatePickerMode initialDatePickerMode = DatePickerMode.day,
}) async {
  assert(firstDate.year >= 1970 && lastDate.year <= 2100,
      'Invalid Date Range. Valid Range = [1970, 2100]');
  assert(!initialDate.isBefore(firstDate),
      'initialDate must be on or after firstDate');
  assert(!initialDate.isAfter(lastDate),
      'initialDate must be on or before lastDate');
  assert(
      !firstDate.isAfter(lastDate), 'lastDate must be on or after firstDate');

  final theme = Theme.of(context);
  switch (theme.platform) {
    case TargetPlatform.android:
    case TargetPlatform.fuchsia:
    case TargetPlatform.linux:
    case TargetPlatform.windows:
      return await showMaterialDatePicker(
        context: context,
        firstDate: firstDate,
        lastDate: lastDate,
        initialDate: initialDate,
        initialDatePickerMode: initialDatePickerMode,
      );
    case TargetPlatform.iOS:
    case TargetPlatform.macOS:
      return await _showCupertinoDatePicker(
        context: context,
        initialDate: initialDate,
        firstDate: firstDate,
        lastDate: lastDate,
        language: language,
        dateOrder: dateOrder,
      );
  }
}