Skip to content

Commit

Permalink
Add verbose debugging logging to the shouldShowScreen method (flutt…
Browse files Browse the repository at this point in the history
  • Loading branch information
kenzieschmoll committed Jun 28, 2023
1 parent 99dca81 commit ef6e4e3
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions packages/devtools_app/lib/src/shared/screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,15 @@ import 'dart:math' as math;

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';

import 'globals.dart';
import 'primitives/listenable.dart';
import 'theme.dart';
import 'version.dart';

final _log = Logger('screen.dart');

/// Defines a page shown in the DevTools [TabBar].
@immutable
abstract class Screen {
Expand Down Expand Up @@ -207,33 +210,45 @@ abstract class Screen {

/// Check whether a screen should be shown in the UI.
bool shouldShowScreen(Screen screen) {
_log.finest('shouldShowScreen: ${screen.screenId}');
if (offlineController.offlineMode.value) {
_log.finest('for offline mode: returning ${screen.worksOffline}');
return screen.worksOffline;
}
// No sense in ever showing screens in non-offline mode unless the service
// is available. This also avoids odd edge cases where we could show screens
// while the ServiceManager is still initializing.
if (!serviceManager.isServiceAvailable ||
!serviceManager.connectedApp!.connectedAppInitialized) return false;
final serviceReady = serviceManager.isServiceAvailable &&
serviceManager.connectedApp!.connectedAppInitialized;
if (!serviceReady) {
_log.finest('service not ready: returning false');
return false;
}

if (screen.requiresLibrary != null) {
if (serviceManager.isolateManager.mainIsolate.value == null ||
!serviceManager.libraryUriAvailableNow(screen.requiresLibrary)) {
_log.finest(
'screen requires library ${screen.requiresLibrary}: returning false',
);
return false;
}
}
if (screen.requiresDartVm) {
if (serviceManager.connectedApp!.isRunningOnDartVM != true) {
_log.finest('screen requires Dart VM: returning false');
return false;
}
}
if (screen.requiresDebugBuild) {
if (serviceManager.connectedApp!.isProfileBuildNow == true) {
_log.finest('screen requires debug build: returning false');
return false;
}
}
if (screen.requiresVmDeveloperMode) {
if (!preferences.vmDeveloperModeEnabled.value) {
_log.finest('screen requires vm developer mode: returning false');
return false;
}
}
Expand All @@ -242,9 +257,11 @@ bool shouldShowScreen(Screen screen) {
!screen.shouldShowForFlutterVersion!(
serviceManager.connectedApp!.flutterVersionNow,
)) {
_log.finest('screen has flutter version restraints: returning false');
return false;
}
}
_log.finest('${screen.screenId} screen supported: returning true');
return true;
}

Expand Down

0 comments on commit ef6e4e3

Please sign in to comment.