import 'package:didvan/config/design_config.dart'; import 'package:didvan/config/theme_data.dart'; import 'package:didvan/constants/assets.dart'; import 'package:didvan/models/enums.dart'; import 'package:didvan/models/view/action_sheet_data.dart'; import 'package:didvan/widgets/didvan/button.dart'; import 'package:didvan/widgets/didvan/text.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:rive/rive.dart'; class ActionSheetUtils { static late final BuildContext context; static Future showLogoLoadingIndicator() async { await showDialog( context: context, builder: (context) => _customSystemOverlayStyle( child: Padding( padding: EdgeInsets.symmetric( horizontal: MediaQuery.of(context).size.width / 3, ), child: const RiveAnimation.asset(Assets.logoLoadingAnimation), ), ), ); } static AnnotatedRegion _customSystemOverlayStyle({required Widget child}) { return AnnotatedRegion( value: DesignConfig.systemUiOverlayStyle.copyWith( // systemNavigationBarColor: Colors.black45, ), child: child, ); } static Future showBottomSheet({required ActionSheetData data}) async { await showModalBottomSheet( context: context, builder: (context) => Container( padding: const EdgeInsets.all(20), decoration: BoxDecoration( color: Theme.of(context).colorScheme.surface, borderRadius: const BorderRadius.vertical( top: Radius.circular( 10, ), ), ), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ Center( child: Container( height: 3, width: 50, color: Theme.of(context).colorScheme.hint, ), ), const SizedBox(height: 8), Row( children: [ if (data.titleIcon != null) Icon( data.titleIcon, color: data.titleColor ?? Theme.of(context).colorScheme.title, ), if (data.titleIcon != null) const SizedBox(width: 8), DidvanText( data.title, style: Theme.of(context).textTheme.subtitle1, color: data.titleColor ?? Theme.of(context).colorScheme.title, ) ], ), const SizedBox(height: 28), data.content, const SizedBox(height: 28), Row( children: [ if (data.hasDismissButton) Expanded( child: DidvanButton( title: data.dismissTitle ?? 'بازگشت', style: ButtonStyleMode.flat, ), ), const SizedBox(width: 20), Expanded( child: DidvanButton( style: ButtonStyleMode.primary, onPressed: () {}, title: data.confrimTitle ?? 'تایید', ), ), ], ), ], ), ), ); } }