Skip to content

Commit 3df5e00

Browse files
committed
Fix focusNode dispose issue
1 parent 8a40655 commit 3df5e00

File tree

1 file changed

+24
-16
lines changed

1 file changed

+24
-16
lines changed

lib/src/material/material_desktop_controls.dart

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,27 @@ class _MaterialDesktopControlsState extends State<MaterialDesktopControls>
5959
void initState() {
6060
super.initState();
6161
_focusNode = FocusNode();
62+
_focusNode.requestFocus();
6263
notifier = Provider.of<PlayerNotifier>(context, listen: false);
6364
}
6465

66+
void _handleKeyPress(event) {
67+
if (event is KeyDownEvent && event.logicalKey == LogicalKeyboardKey.space) {
68+
_playPause();
69+
} else if (event is KeyDownEvent &&
70+
event.logicalKey == LogicalKeyboardKey.arrowRight) {
71+
_seekForward();
72+
} else if (event is KeyDownEvent &&
73+
event.logicalKey == LogicalKeyboardKey.arrowLeft) {
74+
_seekBackward();
75+
} else if (event is KeyDownEvent &&
76+
event.logicalKey == LogicalKeyboardKey.escape) {
77+
if (chewieController.isFullScreen) {
78+
_onExpandCollapse();
79+
}
80+
}
81+
}
82+
6583
@override
6684
Widget build(BuildContext context) {
6785
if (_latestValue.hasError) {
@@ -78,23 +96,13 @@ class _MaterialDesktopControlsState extends State<MaterialDesktopControls>
7896
);
7997
}
8098

99+
81100
return KeyboardListener(
82101
focusNode: _focusNode,
83-
onKeyEvent: (event) {
84-
if (event is KeyDownEvent && event.logicalKey == LogicalKeyboardKey.space) {
85-
_playPause();
86-
} else if (event is KeyDownEvent && event.logicalKey == LogicalKeyboardKey.arrowRight) {
87-
_seekForward();
88-
} else if (event is KeyDownEvent && event.logicalKey == LogicalKeyboardKey.arrowLeft) {
89-
_seekBackward();
90-
} else if (event is KeyDownEvent && event.logicalKey == LogicalKeyboardKey.escape) {
91-
if (chewieController.isFullScreen) {
92-
_onExpandCollapse();
93-
}
94-
}
95-
},
102+
onKeyEvent: _handleKeyPress,
96103
child: MouseRegion(
97104
onHover: (_) {
105+
_focusNode.requestFocus();
98106
_cancelAndRestartTimer();
99107
},
100108
child: GestureDetector(
@@ -119,8 +127,8 @@ class _MaterialDesktopControlsState extends State<MaterialDesktopControls>
119127
0.0,
120128
notifier.hideStuff ? barHeight * 0.8 : 0.0,
121129
),
122-
child:
123-
_buildSubtitles(context, chewieController.subtitle!),
130+
child: _buildSubtitles(
131+
context, chewieController.subtitle!),
124132
),
125133
_buildBottomBar(context),
126134
],
@@ -136,11 +144,11 @@ class _MaterialDesktopControlsState extends State<MaterialDesktopControls>
136144
@override
137145
void dispose() {
138146
_dispose();
147+
_focusNode.dispose();
139148
super.dispose();
140149
}
141150

142151
void _dispose() {
143-
_focusNode.dispose();
144152
controller.removeListener(_updateState);
145153
_hideTimer?.cancel();
146154
_initTimer?.cancel();

0 commit comments

Comments
 (0)