TF-1877 Fix error TextEditingController was used after being disposed on some screen
(cherry picked from commit 50e4c6ec55eea21a45a5a8dd31cd239245248df3)
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:get/get_instance/src/bindings_interface.dart';
|
||||
|
||||
abstract class BaseBindings extends Bindings {
|
||||
|
||||
@override
|
||||
void dependencies() {
|
||||
log('BaseBindings::dependencies():');
|
||||
bindingsDataSourceImpl();
|
||||
bindingsDataSource();
|
||||
bindingsRepositoryImpl();
|
||||
|
||||
@@ -20,7 +20,6 @@ import 'package:model/account/authentication_type.dart';
|
||||
import 'package:rule_filter/rule_filter/capability_rule_filter.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/message_dialog_action_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/popup_context_menu_action_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/view_as_dialog_action_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/mdn_interactor_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/network/config/authorization_interceptors.dart';
|
||||
@@ -55,8 +54,7 @@ import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||
|
||||
abstract class BaseController extends GetxController
|
||||
with MessageDialogActionMixin,
|
||||
PopupContextMenuActionMixin,
|
||||
ViewAsDialogActionMixin {
|
||||
PopupContextMenuActionMixin {
|
||||
|
||||
final CachingManager cachingManager = Get.find<CachingManager>();
|
||||
final languageCacheManager = Get.find<LanguageCacheManager>();
|
||||
|
||||
@@ -41,6 +41,7 @@ import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_na
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/dialog_router.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
||||
|
||||
@@ -378,32 +379,17 @@ abstract class BaseMailboxController extends BaseController {
|
||||
mailboxIdSelected: mailboxSelected.id
|
||||
);
|
||||
|
||||
if (PlatformInfo.isWeb) {
|
||||
showDialogDestinationPicker(
|
||||
context: context,
|
||||
arguments: arguments,
|
||||
onSelectedMailbox: (destinationMailbox) {
|
||||
onMovingMailboxAction(
|
||||
mailboxSelected,
|
||||
destinationMailbox == PresentationMailbox.unifiedMailbox
|
||||
? null
|
||||
: destinationMailbox
|
||||
);
|
||||
}
|
||||
);
|
||||
} else {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: arguments);
|
||||
final destinationMailbox = PlatformInfo.isWeb
|
||||
? await DialogRouter.pushGeneralDialog(routeName: AppRoutes.destinationPicker, arguments: arguments)
|
||||
: await push(AppRoutes.destinationPicker, arguments: arguments);
|
||||
|
||||
if (destinationMailbox is PresentationMailbox) {
|
||||
onMovingMailboxAction(
|
||||
mailboxSelected,
|
||||
destinationMailbox == PresentationMailbox.unifiedMailbox
|
||||
? null
|
||||
: destinationMailbox
|
||||
);
|
||||
}
|
||||
if (destinationMailbox is PresentationMailbox) {
|
||||
onMovingMailboxAction(
|
||||
mailboxSelected,
|
||||
destinationMailbox == PresentationMailbox.unifiedMailbox
|
||||
? null
|
||||
: destinationMailbox
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,168 +0,0 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/contact/presentation/contact_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/contact/presentation/contact_view.dart';
|
||||
import 'package:tmail_ui_user/features/contact/presentation/model/contact_arguments.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/destination_picker/presentation/model/destination_picker_arguments.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/identity_creator/presentation/model/identity_creator_arguments.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/mailbox_creator/presentation/model/mailbox_creator_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_creator/presentation/model/new_mailbox_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/rules_filter_creator_arguments.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/route_navigation.dart';
|
||||
|
||||
mixin ViewAsDialogActionMixin {
|
||||
|
||||
void showDialogDestinationPicker({
|
||||
required BuildContext context,
|
||||
required DestinationPickerArguments arguments,
|
||||
required Function(PresentationMailbox) onSelectedMailbox
|
||||
}) {
|
||||
DestinationPickerBindings().dependencies();
|
||||
|
||||
showGeneralDialog(
|
||||
context: context,
|
||||
barrierDismissible: true,
|
||||
barrierLabel: '',
|
||||
barrierColor: Colors.black.withAlpha(24),
|
||||
pageBuilder: (context, animation, secondaryAnimation) {
|
||||
return DestinationPickerView.fromArguments(
|
||||
arguments,
|
||||
onDismissCallback: () {
|
||||
DestinationPickerBindings().dispose();
|
||||
popBack();
|
||||
},
|
||||
onSelectedMailboxCallback: (destinationMailbox) {
|
||||
DestinationPickerBindings().dispose();
|
||||
popBack();
|
||||
|
||||
if (destinationMailbox is PresentationMailbox) {
|
||||
onSelectedMailbox.call(destinationMailbox);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
void showDialogMailboxCreator({
|
||||
required BuildContext context,
|
||||
required MailboxCreatorArguments arguments,
|
||||
required Function(NewMailboxArguments) onCreatedMailbox
|
||||
}) {
|
||||
MailboxCreatorBindings().dependencies();
|
||||
|
||||
showGeneralDialog(
|
||||
context: context,
|
||||
barrierDismissible: true,
|
||||
barrierLabel: '',
|
||||
barrierColor: Colors.black.withAlpha(24),
|
||||
pageBuilder: (context, animation, secondaryAnimation) {
|
||||
return MailboxCreatorView.fromArguments(
|
||||
arguments,
|
||||
onDismissCallback: () {
|
||||
MailboxCreatorBindings().dispose();
|
||||
popBack();
|
||||
},
|
||||
onCreatedMailboxCallback: (arguments) {
|
||||
MailboxCreatorBindings().dispose();
|
||||
popBack();
|
||||
|
||||
if (arguments is NewMailboxArguments) {
|
||||
onCreatedMailbox.call(arguments);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
void showDialogContactView({
|
||||
required BuildContext context,
|
||||
required ContactArguments arguments,
|
||||
required Function(EmailAddress) onSelectedContact
|
||||
}) {
|
||||
ContactBindings().dependencies();
|
||||
|
||||
showGeneralDialog(
|
||||
context: context,
|
||||
barrierDismissible: true,
|
||||
barrierLabel: '',
|
||||
barrierColor: Colors.black.withAlpha(24),
|
||||
pageBuilder: (context, animation, secondaryAnimation) {
|
||||
return ContactView.fromArguments(
|
||||
arguments,
|
||||
onDismissCallback: () {
|
||||
ContactBindings().dispose();
|
||||
popBack();
|
||||
},
|
||||
onSelectedContactCallback: (emailAddress) {
|
||||
ContactBindings().dispose();
|
||||
popBack();
|
||||
|
||||
onSelectedContact.call(emailAddress);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
void showDialogIdentityCreator({
|
||||
required BuildContext context,
|
||||
required IdentityCreatorArguments arguments,
|
||||
required Function(dynamic) onCreatedIdentity
|
||||
}) {
|
||||
IdentityCreatorBindings().dependencies();
|
||||
|
||||
showGeneralDialog(
|
||||
context: context,
|
||||
barrierDismissible: true,
|
||||
barrierLabel: '',
|
||||
barrierColor: Colors.black.withAlpha(24),
|
||||
pageBuilder: (context, animation, secondaryAnimation) {
|
||||
return IdentityCreatorView.fromArguments(
|
||||
arguments,
|
||||
onDismissCallback: () {
|
||||
IdentityCreatorBindings().dispose();
|
||||
popBack();
|
||||
},
|
||||
onCreatedIdentityCallback: (args) {
|
||||
IdentityCreatorBindings().dispose();
|
||||
popBack();
|
||||
|
||||
onCreatedIdentity.call(args);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
void showDialogRuleFilterCreator({
|
||||
required BuildContext context,
|
||||
required RulesFilterCreatorArguments arguments,
|
||||
required Function(dynamic) onCreatedRuleFilter
|
||||
}) {
|
||||
RulesFilterCreatorBindings().dependencies();
|
||||
|
||||
showGeneralDialog(
|
||||
context: context,
|
||||
barrierDismissible: true,
|
||||
barrierLabel: '',
|
||||
barrierColor: Colors.black.withAlpha(24),
|
||||
pageBuilder: (context, animation, secondaryAnimation) {
|
||||
return RuleFilterCreatorView.fromArguments(
|
||||
arguments,
|
||||
onDismissCallback: () {
|
||||
RulesFilterCreatorBindings().dispose();
|
||||
popBack();
|
||||
},
|
||||
onCreatedRuleFilterCallback: (args) {
|
||||
RulesFilterCreatorBindings().dispose();
|
||||
popBack();
|
||||
|
||||
onCreatedRuleFilter.call(args);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user