[PE] tooltip to describe current exception mode (#8849)
* [PE] tooltip to describe current exception mode
* + test
* ++
* + exception mode tooltip
* => helper function
* - custom find
* PR
diff --git a/packages/devtools_app/lib/src/screens/debugger/controls.dart b/packages/devtools_app/lib/src/screens/debugger/controls.dart
index e1a5852..5f03b84 100644
--- a/packages/devtools_app/lib/src/screens/debugger/controls.dart
+++ b/packages/devtools_app/lib/src/screens/debugger/controls.dart
@@ -256,23 +256,27 @@
return ValueListenableBuilder<String?>(
valueListenable: controller.exceptionPauseMode,
builder: (BuildContext context, modeId, _) {
- return RoundedDropDownButton<ExceptionMode>(
- value: ExceptionMode.from(modeId),
- // Cannot set exception pause mode for system isolates.
- onChanged:
- controller.isSystemIsolate
- ? null
- : (ExceptionMode? mode) {
- unawaited(controller.setIsolatePauseMode(mode!.id));
- },
- isDense: true,
- items: [
- for (final mode in ExceptionMode.modes)
- DropdownMenuItem<ExceptionMode>(
- value: mode,
- child: Text(isInSmallMode ? mode.name : mode.description),
- ),
- ],
+ final exceptionMode = ExceptionMode.from(modeId);
+ return DevToolsTooltip(
+ message: exceptionMode.description,
+ child: RoundedDropDownButton<ExceptionMode>(
+ value: exceptionMode,
+ // Cannot set exception pause mode for system isolates.
+ onChanged:
+ controller.isSystemIsolate
+ ? null
+ : (ExceptionMode? mode) {
+ unawaited(controller.setIsolatePauseMode(mode!.id));
+ },
+ isDense: true,
+ items: [
+ for (final mode in ExceptionMode.modes)
+ DropdownMenuItem<ExceptionMode>(
+ value: mode,
+ child: Text(isInSmallMode ? mode.name : mode.description),
+ ),
+ ],
+ ),
);
},
);
diff --git a/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md b/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md
index be97164..35b62b2 100644
--- a/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md
+++ b/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md
@@ -35,7 +35,8 @@
## Debugger updates
-TODO: Remove this section if there are not any general updates.
+* Added a tooltip to describe the exception mode drop-down. -
+[#8849](https://github.com/flutter/devtools/pull/8849)
## Network profiler updates
diff --git a/packages/devtools_app/test/screens/debugger/debugger_screen_test.dart b/packages/devtools_app/test/screens/debugger/debugger_screen_test.dart
index 3e5b2ed..1370989 100644
--- a/packages/devtools_app/test/screens/debugger/debugger_screen_test.dart
+++ b/packages/devtools_app/test/screens/debugger/debugger_screen_test.dart
@@ -172,6 +172,23 @@
},
);
+ testWidgetsWithWindowSize(
+ 'debugger exception mode tooltip',
+ smallWindowSize,
+ (WidgetTester tester) async {
+ await tester.pumpWidget(
+ wrapWithControllers(
+ Builder(builder: screen.build),
+ debugger: debuggerController,
+ ),
+ );
+ expect(
+ find.byTooltip('Stop on uncaught exceptions', skipOffstage: false),
+ findsOneWidget,
+ );
+ },
+ );
+
testWidgetsWithWindowSize('node selection state', windowSize, (
WidgetTester tester,
) async {