import 'package:flutter/cupertino.dart'; import 'package:please_pay_me/theme/tokens.dart'; import 'package:please_pay_me/ui/atoms/app_button.dart'; /// Bottom sheet with a native wheel date picker. Future showAppDatePicker({ required BuildContext context, required DateTime initialDate, DateTime? minimumDate, DateTime? maximumDate, String confirmLabel = 'Готово', }) { var selected = initialDate; return showCupertinoModalPopup( context: context, builder: (ctx) => Container( height: 320, padding: const EdgeInsets.only(top: AppSpacing.s2), color: AppColors.of(ctx, AppColors.groupedSurface), child: SafeArea( top: false, child: Column( children: [ Expanded( child: CupertinoDatePicker( mode: CupertinoDatePickerMode.date, initialDateTime: initialDate, minimumDate: minimumDate, maximumDate: maximumDate, onDateTimeChanged: (value) => selected = value, ), ), Padding( padding: const EdgeInsets.fromLTRB( AppSpacing.gutter, AppSpacing.s2, AppSpacing.gutter, AppSpacing.s3, ), child: AppButton( label: confirmLabel, onPressed: () => Navigator.of(ctx).pop( DateTime(selected.year, selected.month, selected.day), ), ), ), ], ), ), ), ); } /// Full-height modal used for create/edit forms. Future showAppFormSheet({ required BuildContext context, required WidgetBuilder builder, }) { return showCupertinoModalPopup( context: context, builder: (ctx) => Padding( padding: EdgeInsets.only(top: MediaQuery.of(ctx).padding.top + AppSpacing.s6), child: ClipRRect( borderRadius: const BorderRadius.vertical(top: Radius.circular(AppRadii.xl)), child: Builder(builder: builder), ), ), ); }