@@ -59,9 +59,27 @@ class _MaterialDesktopControlsState extends State<MaterialDesktopControls>
59
59
void initState () {
60
60
super .initState ();
61
61
_focusNode = FocusNode ();
62
+ _focusNode.requestFocus ();
62
63
notifier = Provider .of <PlayerNotifier >(context, listen: false );
63
64
}
64
65
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
+
65
83
@override
66
84
Widget build (BuildContext context) {
67
85
if (_latestValue.hasError) {
@@ -78,23 +96,13 @@ class _MaterialDesktopControlsState extends State<MaterialDesktopControls>
78
96
);
79
97
}
80
98
99
+
81
100
return KeyboardListener (
82
101
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,
96
103
child: MouseRegion (
97
104
onHover: (_) {
105
+ _focusNode.requestFocus ();
98
106
_cancelAndRestartTimer ();
99
107
},
100
108
child: GestureDetector (
@@ -119,8 +127,8 @@ class _MaterialDesktopControlsState extends State<MaterialDesktopControls>
119
127
0.0 ,
120
128
notifier.hideStuff ? barHeight * 0.8 : 0.0 ,
121
129
),
122
- child:
123
- _buildSubtitles ( context, chewieController.subtitle! ),
130
+ child: _buildSubtitles (
131
+ context, chewieController.subtitle! ),
124
132
),
125
133
_buildBottomBar (context),
126
134
],
@@ -136,11 +144,11 @@ class _MaterialDesktopControlsState extends State<MaterialDesktopControls>
136
144
@override
137
145
void dispose () {
138
146
_dispose ();
147
+ _focusNode.dispose ();
139
148
super .dispose ();
140
149
}
141
150
142
151
void _dispose () {
143
- _focusNode.dispose ();
144
152
controller.removeListener (_updateState);
145
153
_hideTimer? .cancel ();
146
154
_initTimer? .cancel ();
0 commit comments