showDebugPage static method

void showDebugPage()

Show debug page

Implementation

static void showDebugPage() {
  if (!_enabled) {
    debugPrint('SwiftViewInterceptor: Debug tool is not enabled.');
    return;
  }

  // Priority 1: Try to get navigator from global key first (works with GetMaterialApp)
  if (_navigatorKey != null) {
    final navigatorState = _navigatorKey!.currentState;
    if (navigatorState != null) {
      navigatorState.push(
        MaterialPageRoute(
          builder: (context) => const SwiftDebugPage(),
        ),
      );
      debugPrint('SwiftViewInterceptor: Navigated using global navigatorKey.');
      return;
    } else {
      debugPrint('SwiftViewInterceptor: navigatorKey is set but currentState is null. Navigator may not be built yet.');
    }
  }

  // Priority 2: Fallback to context-based navigation
  if (_context != null) {
    // Try to find navigator from context (root navigator)
    final navigatorState = Navigator.maybeOf(_context!, rootNavigator: true);
    if (navigatorState != null) {
      navigatorState.push(
        MaterialPageRoute(
          builder: (context) => const SwiftDebugPage(),
        ),
      );
      debugPrint('SwiftViewInterceptor: Navigated using context with rootNavigator.');
      return;
    }

    // Try regular navigator (non-root)
    final navigator = Navigator.maybeOf(_context!);
    if (navigator != null) {
      navigator.push(
        MaterialPageRoute(
          builder: (context) => const SwiftDebugPage(),
        ),
      );
      debugPrint('SwiftViewInterceptor: Navigated using context navigator.');
      return;
    }

    // Last resort: try to find any navigator in the widget tree
    final ancestorNavigator = _context!.findAncestorStateOfType<NavigatorState>();
    if (ancestorNavigator != null) {
      ancestorNavigator.push(
        MaterialPageRoute(
          builder: (context) => const SwiftDebugPage(),
        ),
      );
      debugPrint('SwiftViewInterceptor: Navigated using ancestor NavigatorState.');
      return;
    }
  }

  // If all else fails, print a detailed warning
  debugPrint('SwiftViewInterceptor: Could not find Navigator.');
  debugPrint('  - navigatorKey: ${_navigatorKey != null ? "set" : "null"}');
  debugPrint('  - navigatorKey.currentState: ${_navigatorKey?.currentState != null ? "available" : "null"}');
  debugPrint('  - context: ${_context != null ? "set" : "null"}');
  debugPrint('  - Make sure to:');
  debugPrint('    1. Pass navigatorKey to SwiftFlutter.init(navigatorKey: yourKey)');
  debugPrint('    2. Use the same key in GetMaterialApp/MaterialApp: navigatorKey: yourKey');
}