import 'package:core/utils/app_logger.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_bindings.dart'; import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_view.dart'; import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_bindings.dart'; import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_view.dart'; import 'package:tmail_ui_user/features/mailbox_creator/presentation/mailbox_creator_bindings.dart'; import 'package:tmail_ui_user/features/mailbox_creator/presentation/mailbox_creator_view.dart'; import 'package:tmail_ui_user/features/rules_filter_creator/presentation/rules_filter_creator_bindings.dart'; import 'package:tmail_ui_user/features/rules_filter_creator/presentation/rules_filter_creator_view.dart'; import 'package:tmail_ui_user/main/routes/app_routes.dart'; class DialogRouter { static Future pushGeneralDialog({ required String routeName, required Object? arguments }) { _bindingDI(routeName); return Get.generalDialog( routeSettings: RouteSettings(arguments: arguments), pageBuilder: (_, __, ___) => _generateView(routeName: routeName, arguments: arguments) ); } static void _bindingDI(String routeName) { log('DialogRouter::_bindingDI():routeName: $routeName'); switch(routeName) { case AppRoutes.mailboxCreator: MailboxCreatorBindings().dependencies(); break; case AppRoutes.rulesFilterCreator: RulesFilterCreatorBindings().dependencies(); break; case AppRoutes.identityCreator: IdentityCreatorBindings().dependencies(); break; case AppRoutes.destinationPicker: DestinationPickerBindings().dependencies(); break; } } static Widget _generateView({required String routeName, required Object? arguments}) { log('DialogRouter::_generateView():routeName: $routeName | arguments: $arguments'); switch(routeName) { case AppRoutes.mailboxCreator: return MailboxCreatorView(); case AppRoutes.rulesFilterCreator: return RuleFilterCreatorView(); case AppRoutes.identityCreator: return IdentityCreatorView(); case AppRoutes.destinationPicker: return DestinationPickerView(); default: return const SizedBox.shrink(); } } }