@@ -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