Skip to content

Commit 301e4f8

Browse files
authored
Correctly set visibility of floating debugging controls (#9327)
1 parent 879d56e commit 301e4f8

File tree

1 file changed

+18
-26
lines changed

1 file changed

+18
-26
lines changed

packages/devtools_app/lib/src/screens/debugger/debugger_screen.dart

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -518,24 +518,17 @@ class FloatingDebuggerControls extends StatefulWidget {
518518

519519
class _FloatingDebuggerControlsState extends State<FloatingDebuggerControls>
520520
with AutoDisposeMixin {
521-
late double controlHeight;
522-
523521
bool get _isPaused => serviceConnection.serviceManager.isMainIsolatePaused;
524522

525-
late final DebuggerController controller;
523+
late final DebuggerController _controller;
524+
late double _controlHeight;
525+
late double _controlOpacity;
526526

527527
@override
528528
void initState() {
529529
super.initState();
530-
controller = screenControllers.lookup<DebuggerController>();
531-
}
532-
533-
@override
534-
void didChangeDependencies() {
535-
super.didChangeDependencies();
536-
cancelListeners();
537-
538-
controlHeight = _isPaused ? defaultButtonHeight : 0.0;
530+
_controller = screenControllers.lookup<DebuggerController>();
531+
_setVisiblityForPausedState(_isPaused);
539532
addAutoDisposeListener(
540533
serviceConnection
541534
.serviceManager
@@ -544,9 +537,7 @@ class _FloatingDebuggerControlsState extends State<FloatingDebuggerControls>
544537
?.isPaused,
545538
() {
546539
setState(() {
547-
if (_isPaused) {
548-
controlHeight = defaultButtonHeight;
549-
}
540+
_setVisiblityForPausedState(_isPaused);
550541
});
551542
},
552543
);
@@ -557,18 +548,11 @@ class _FloatingDebuggerControlsState extends State<FloatingDebuggerControls>
557548
final theme = Theme.of(context);
558549
final colorScheme = theme.colorScheme;
559550
return AnimatedOpacity(
560-
opacity: _isPaused ? 1.0 : 0.0,
551+
opacity: _controlOpacity,
561552
duration: longDuration,
562-
onEnd: () {
563-
if (!_isPaused) {
564-
setState(() {
565-
controlHeight = 0.0;
566-
});
567-
}
568-
},
569553
child: Container(
570554
color: colorScheme.warningContainer,
571-
height: controlHeight,
555+
height: _controlHeight,
572556
child: OutlinedRowGroup(
573557
borderColor: theme.focusColor,
574558
children: [
@@ -584,7 +568,7 @@ class _FloatingDebuggerControlsState extends State<FloatingDebuggerControls>
584568
DevToolsTooltip(
585569
message: 'Resume',
586570
child: TextButton(
587-
onPressed: controller.resume,
571+
onPressed: _controller.resume,
588572
child: const DevToolsIcon(
589573
iconAsset: 'icons/material_symbols/resume.png',
590574
color: Colors.green,
@@ -595,7 +579,7 @@ class _FloatingDebuggerControlsState extends State<FloatingDebuggerControls>
595579
DevToolsTooltip(
596580
message: 'Step over',
597581
child: TextButton(
598-
onPressed: controller.stepOver,
582+
onPressed: _controller.stepOver,
599583
child: const DevToolsIcon(
600584
iconAsset: 'icons/material_symbols/step_over.png',
601585
color: Colors.black,
@@ -608,4 +592,12 @@ class _FloatingDebuggerControlsState extends State<FloatingDebuggerControls>
608592
),
609593
);
610594
}
595+
596+
/// Sets the visibilty depending on whether the app [isPaused].
597+
void _setVisiblityForPausedState(bool isPaused) {
598+
setState(() {
599+
_controlHeight = isPaused ? defaultButtonHeight : 0.0;
600+
_controlOpacity = isPaused ? 1.0 : 0.0;
601+
});
602+
}
611603
}

0 commit comments

Comments
 (0)