ix_back_button_dispatcher.dart 799 B

123456789101112131415161718192021222324252627282930
  1. import 'package:flutter/material.dart';
  2. import 'package:get/get.dart';
  3. class IXBackButtonDispatcher extends BackButtonDispatcher
  4. with WidgetsBindingObserver {
  5. /// Create a root back button dispatcher.
  6. IXBackButtonDispatcher();
  7. @override
  8. void addCallback(ValueGetter<Future<bool>> callback) {
  9. if (!hasCallbacks) {
  10. WidgetsBinding.instance.addObserver(this);
  11. }
  12. super.addCallback(callback);
  13. }
  14. @override
  15. void removeCallback(ValueGetter<Future<bool>> callback) {
  16. super.removeCallback(callback);
  17. if (!hasCallbacks) {
  18. WidgetsBinding.instance.removeObserver(this);
  19. }
  20. }
  21. @override
  22. Future<bool> didPopRoute() async {
  23. final maybePop = await Get.rawRoute?.navigator?.maybePop();
  24. return maybePop ?? invokeCallback(Future.value(false));
  25. }
  26. }