Skip to content

Commit dff1b55

Browse files
authored
Adds a banner warning users the legacy inspector will be removed (#9572)
1 parent 2f73978 commit dff1b55

7 files changed

Lines changed: 80 additions & 9 deletions

File tree

packages/devtools_app/lib/src/screens/inspector/inspector_screen_body.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import '../../shared/analytics/constants.dart' as gac;
1616
import '../../shared/analytics/metrics.dart';
1717
import '../../shared/console/eval/inspector_tree.dart';
1818
import '../../shared/globals.dart';
19+
import '../../shared/managers/banner_messages.dart';
1920
import '../../shared/managers/error_badge_manager.dart';
2021
import '../../shared/primitives/blocking_action_mixin.dart';
2122
import '../../shared/ui/common_widgets.dart';
@@ -111,6 +112,8 @@ class InspectorScreenBodyState extends State<InspectorScreenBody>
111112
}
112113

113114
_summaryTreeController.setSearchTarget(searchTarget);
115+
116+
_showLegacyInspectorWarning(context);
114117
}
115118

116119
@override
@@ -218,6 +221,12 @@ class InspectorScreenBodyState extends State<InspectorScreenBody>
218221
_summaryTreeController.resetSearch();
219222
}
220223

224+
void _showLegacyInspectorWarning(BuildContext context) {
225+
if (context.mounted) {
226+
pushLegacyInspectorWarning(InspectorScreen.id);
227+
}
228+
}
229+
221230
List<Widget> getServiceExtensionWidgets() {
222231
return [
223232
ServiceExtensionButtonGroup(

packages/devtools_app/lib/src/screens/inspector_shared/inspector_settings_dialog.dart

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,45 @@
55
import 'dart:async';
66

77
import 'package:devtools_app_shared/ui.dart';
8+
import 'package:devtools_app_shared/utils.dart';
89
import 'package:flutter/material.dart';
910
import 'package:vm_service/vm_service.dart' hide Stack;
1011

1112
import '../../shared/analytics/analytics.dart' as ga;
1213
import '../../shared/analytics/constants.dart' as gac;
1314
import '../../shared/feature_flags.dart';
1415
import '../../shared/globals.dart';
16+
import '../../shared/managers/banner_messages.dart';
1517
import '../../shared/preferences/preferences.dart';
1618
import '../../shared/primitives/simple_items.dart';
1719
import '../../shared/ui/common_widgets.dart';
1820
import '../../shared/ui/editable_list.dart';
21+
import 'inspector_screen.dart';
1922

20-
class FlutterInspectorSettingsDialog extends StatelessWidget {
23+
class FlutterInspectorSettingsDialog extends StatefulWidget {
2124
const FlutterInspectorSettingsDialog({super.key});
2225

26+
@override
27+
State<FlutterInspectorSettingsDialog> createState() =>
28+
_FlutterInspectorSettingsDialogState();
29+
}
30+
31+
class _FlutterInspectorSettingsDialogState
32+
extends State<FlutterInspectorSettingsDialog>
33+
with AutoDisposeMixin {
34+
@override
35+
void initState() {
36+
super.initState();
37+
addAutoDisposeListener(preferences.inspector.legacyInspectorEnabled, () {
38+
if (!preferences.inspector.legacyInspectorEnabled.value) {
39+
bannerMessages.removeMessageByKey(
40+
LegacyInspectorWarningMessage.buildKey(InspectorScreen.id),
41+
InspectorScreen.id,
42+
);
43+
}
44+
});
45+
}
46+
2347
@override
2448
Widget build(BuildContext context) {
2549
final theme = Theme.of(context);
@@ -74,7 +98,7 @@ class FlutterInspectorSettingsDialog extends StatelessWidget {
7498
title: 'Use legacy inspector',
7599
description:
76100
'Disable the redesigned Flutter inspector. Please know that '
77-
'the legacy inspector may be removed in a future release.',
101+
'the legacy inspector will be removed in a future release.',
78102
gaItem: gac.inspectorV2Disabled,
79103
),
80104
),

packages/devtools_app/lib/src/shared/managers/banner_messages.dart

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,34 @@ The $codeType DevTools debugger is in maintenance mode. For the best debugging e
521521
);
522522
}
523523

524+
class LegacyInspectorWarningMessage extends BannerWarning {
525+
LegacyInspectorWarningMessage({required super.screenId})
526+
: super(
527+
key: buildKey(screenId),
528+
buildTextSpans: (context) => [
529+
const TextSpan(
530+
text:
531+
'The legacy inspector will be removed in a future release. '
532+
'Please enable the new inspector in the inspector settings. '
533+
'If there is an issue preventing you from using the new '
534+
'inspector, please file a ',
535+
),
536+
GaLinkTextSpan(
537+
link: const GaLink(
538+
display: 'bug',
539+
url: 'https://github.com/flutter/devtools/issues/new',
540+
),
541+
context: context,
542+
style: Theme.of(context).linkTextStyle,
543+
),
544+
const TextSpan(text: '.'),
545+
],
546+
);
547+
548+
static Key buildKey(String screenId) =>
549+
Key('LegacyInspectorWarningMessage - $screenId');
550+
}
551+
524552
void maybePushDebugModePerformanceMessage(String screenId) {
525553
if (offlineDataController.showingOfflineData.value) return;
526554
if (serviceConnection.serviceManager.connectedApp?.isDebugFlutterAppNow ??
@@ -549,6 +577,10 @@ void pushDebuggerIdeRecommendationMessage(String screenId) {
549577
);
550578
}
551579

580+
void pushLegacyInspectorWarning(String screenId) {
581+
bannerMessages.addMessage(LegacyInspectorWarningMessage(screenId: screenId));
582+
}
583+
552584
extension BannerMessageThemeExtension on ThemeData {
553585
TextStyle get warningMessageLinkStyle => regularTextStyle.copyWith(
554586
decoration: TextDecoration.underline,

packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ TODO: Remove this section if there are not any general updates.
1919

2020
## Inspector updates
2121

22-
TODO: Remove this section if there are not any general updates.
22+
- Added a warning banner that the legacy inspector will be removed in a future
23+
release. - [#9572](https://github.com/flutter/devtools/pull/9572)
2324

2425
## Performance updates
2526

packages/devtools_app/test/screens/inspector/inspector_integration_test.dart

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd.
44

55
import 'package:devtools_app/devtools_app.dart';
6+
import 'package:devtools_app_shared/utils.dart';
67
import 'package:devtools_test/helpers.dart';
78
import 'package:flutter/material.dart';
89
import 'package:flutter_test/flutter_test.dart';
@@ -37,6 +38,13 @@ void main() {
3738
}
3839
}
3940

41+
setUp(() async {
42+
await env.setupEnvironment();
43+
setGlobal(BannerMessagesController, BannerMessagesController());
44+
// Ensure the legacy inspector is enabled:
45+
preferences.inspector.setLegacyInspectorEnabled(true);
46+
});
47+
4048
group('screenshot tests', () {
4149
setUpAll(() {
4250
env = FlutterTestEnvironment(
@@ -45,12 +53,6 @@ void main() {
4553
env.afterEverySetup = resetInspectorSelection;
4654
});
4755

48-
setUp(() async {
49-
await env.setupEnvironment();
50-
// Ensure the legacy inspector is enabled:
51-
preferences.inspector.setLegacyInspectorEnabled(true);
52-
});
53-
5456
tearDownAll(() async {
5557
await env.tearDownEnvironment(force: true);
5658
});

packages/devtools_app/test/screens/inspector/inspector_screen_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ void main() {
5757
setGlobal(PreferencesController, PreferencesController());
5858
setGlobal(Storage, FlutterTestStorage());
5959
setGlobal(NotificationService, NotificationService());
60+
setGlobal(BannerMessagesController, BannerMessagesController());
6061
fakeServiceConnection.consoleService.ensureServiceInitialized();
6162
// Enable the legacy inspector:
6263
preferences.inspector.setLegacyInspectorEnabled(true);

packages/devtools_app/test/screens/inspector_v2/inspector_integration_test.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import 'package:devtools_app/src/screens/inspector_v2/inspector_tree_controller.
1818
import 'package:devtools_app/src/screens/inspector_v2/layout_explorer/ui/utils.dart';
1919
import 'package:devtools_app/src/screens/inspector_v2/widget_properties/properties_view.dart';
2020
import 'package:devtools_app_shared/ui.dart';
21+
import 'package:devtools_app_shared/utils.dart';
2122
import 'package:devtools_test/helpers.dart';
2223
import 'package:flutter/material.dart';
2324
import 'package:flutter_test/flutter_test.dart';
@@ -64,6 +65,7 @@ void main() {
6465
await env.setupEnvironment();
6566
// Enable the V2 inspector:
6667
preferences.inspector.setLegacyInspectorEnabled(false);
68+
setGlobal(BannerMessagesController, BannerMessagesController());
6769
});
6870

6971
tearDown(() async {

0 commit comments

Comments
 (0)