import 'package:core/utils/app_logger.dart'; typedef BeforeUnloadListener = Future Function(); class BeforeUnloadManager { static final BeforeUnloadManager _instance = BeforeUnloadManager._(); factory BeforeUnloadManager() => _instance; BeforeUnloadManager._(); final _listeners = []; void addListener(BeforeUnloadListener listener) { _listeners.add(listener); } void removeListener(BeforeUnloadListener listener) { _listeners.remove(listener); } Future executeBeforeUnloadListeners() async { await Future.wait(_listeners.map((listener) => listener.call())) .onError((error, stackTrace) => [logError(error.toString())]); } }