Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit f03d752

Browse files
committed
Simplify FlutterKeyEvent class
1 parent 311cef9 commit f03d752

File tree

2 files changed

+26
-112
lines changed

2 files changed

+26
-112
lines changed

shell/platform/android/io/flutter/embedding/android/AndroidKeyProcessor.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -85,27 +85,27 @@ public void destroy() {
8585
* @return true if the key event should not be propagated to other Android components. Delayed
8686
* synthesis events will return false, so that other components may handle them.
8787
*/
88-
public boolean onKeyEvent(@NonNull KeyEvent event) {
89-
int action = event.getAction();
90-
if (action != event.ACTION_DOWN && action != event.ACTION_UP) {
88+
public boolean onKeyEvent(@NonNull KeyEvent keyEvent) {
89+
int action = keyEvent.getAction();
90+
if (action != KeyEvent.ACTION_DOWN && action != KeyEvent.ACTION_UP) {
9191
// There is theoretically a KeyEvent.ACTION_MULTIPLE, but theoretically
9292
// that isn't sent by Android anymore, so this is just for protection in
9393
// case the theory is wrong.
9494
return false;
9595
}
96-
if (eventResponder.isHeadEvent(event)) {
97-
// If the event is at the head of the queue of pending events we've seen,
98-
// and has the same id, then we know that this is a re-dispatched event, and
96+
if (eventResponder.isHeadEvent(keyEvent)) {
97+
// If the keyEvent is at the head of the queue of pending events we've seen,
98+
// and has the same id, then we know that this is a re-dispatched keyEvent, and
9999
// we shouldn't respond to it, but we should remove it from tracking now.
100100
eventResponder.removeHeadEvent();
101101
return false;
102102
}
103103

104-
Character complexCharacter = applyCombiningCharacterToBaseCharacter(event.getUnicodeChar());
104+
Character complexCharacter = applyCombiningCharacterToBaseCharacter(keyEvent.getUnicodeChar());
105105
KeyEventChannel.FlutterKeyEvent flutterEvent =
106-
new KeyEventChannel.FlutterKeyEvent(event, complexCharacter);
106+
new KeyEventChannel.FlutterKeyEvent(keyEvent, complexCharacter);
107107

108-
eventResponder.addEvent(event);
108+
eventResponder.addEvent(keyEvent);
109109
if (action == KeyEvent.ACTION_DOWN) {
110110
keyEventChannel.keyDown(flutterEvent);
111111
} else {

shell/platform/android/io/flutter/embedding/engine/systemchannels/KeyEventChannel.java

Lines changed: 17 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -117,39 +117,25 @@ public void keyDown(@NonNull FlutterKeyEvent keyEvent) {
117117
}
118118

119119
private void encodeKeyEvent(
120-
@NonNull FlutterKeyEvent event, @NonNull Map<String, Object> message) {
121-
message.put("flags", event.flags);
122-
message.put("plainCodePoint", event.plainCodePoint);
123-
message.put("codePoint", event.codePoint);
124-
message.put("keyCode", event.keyCode);
125-
message.put("scanCode", event.scanCode);
126-
message.put("metaState", event.metaState);
127-
if (event.complexCharacter != null) {
128-
message.put("character", event.complexCharacter.toString());
120+
@NonNull FlutterKeyEvent keyEvent, @NonNull Map<String, Object> message) {
121+
message.put("flags", keyEvent.event.getFlags());
122+
message.put("plainCodePoint", keyEvent.plainCodePoint);
123+
message.put("codePoint", keyEvent.event.getUnicodeChar());
124+
message.put("keyCode", keyEvent.event.getKeyCode());
125+
message.put("scanCode", keyEvent.event.getScanCode());
126+
message.put("metaState", keyEvent.event.getMetaState());
127+
if (keyEvent.complexCharacter != null) {
128+
message.put("character", keyEvent.complexCharacter.toString());
129129
}
130-
message.put("source", event.source);
131-
message.put("vendorId", event.vendorId);
132-
message.put("productId", event.productId);
133-
message.put("deviceId", event.deviceId);
134-
message.put("repeatCount", event.repeatCount);
130+
message.put("source", keyEvent.event.getSource());
131+
message.put("vendorId", keyEvent.vendorId);
132+
message.put("productId", keyEvent.productId);
133+
message.put("deviceId", keyEvent.event.getDeviceId());
134+
message.put("repeatCount", keyEvent.event.getRepeatCount());
135135
}
136136

137137
/** A key event as defined by Flutter. */
138138
public static class FlutterKeyEvent {
139-
/**
140-
* The id for the device this event came from.
141-
*
142-
* @see <a
143-
* href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getDeviceId()">KeyEvent.getDeviceId()</a>
144-
*/
145-
public final int deviceId;
146-
/**
147-
* The flags for this key event.
148-
*
149-
* @see <a
150-
* href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getFlags()">KeyEvent.getFlags()</a>
151-
*/
152-
public final int flags;
153139
/**
154140
* The code point for the Unicode character produced by this event if no meta keys were pressed
155141
* (by passing 0 to {@code KeyEvent.getUnicodeChar(int)}).
@@ -158,46 +144,10 @@ public static class FlutterKeyEvent {
158144
* href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getUnicodeChar(int)">KeyEvent.getUnicodeChar(int)</a>
159145
*/
160146
public final int plainCodePoint;
161-
/**
162-
* The code point for the Unicode character produced by this event, taking into account the meta
163-
* keys currently pressed.
164-
*
165-
* @see <a
166-
* href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getUnicodeChar()">KeyEvent.getUnicodeChar()</a>
167-
*/
168-
public final int codePoint;
169-
/**
170-
* The Android key code for this event.
171-
*
172-
* @see <a
173-
* href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getKeyCode()">KeyEvent.getKeyCode()</a>
174-
*/
175-
public final int keyCode;
176147
/**
177148
* The character produced by this event, including any combining characters pressed before it.
178149
*/
179150
@Nullable public final Character complexCharacter;
180-
/**
181-
* The Android scan code for the key pressed.
182-
*
183-
* @see <a
184-
* href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getScanCode()">KeyEvent.getScanCode()</a>
185-
*/
186-
public final int scanCode;
187-
/**
188-
* The meta key state for the Android key event.
189-
*
190-
* @see <a
191-
* href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getMetaState()">KeyEvent.getMetaState()</a>
192-
*/
193-
public final int metaState;
194-
/**
195-
* The source of the key event.
196-
*
197-
* @see <a
198-
* href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getSource()">KeyEvent.getSource()</a>
199-
*/
200-
public final int source;
201151
/**
202152
* The vendorId of the device that produced this key event.
203153
*
@@ -212,13 +162,6 @@ public static class FlutterKeyEvent {
212162
* href="https://developer.android.com/reference/android/view/InputDevice?hl=en#getProductId()">InputDevice.getProductId()</a>
213163
*/
214164
public final int productId;
215-
/**
216-
* The repeat count for this event.
217-
*
218-
* @see <a
219-
* href="https://developer.android.com/reference/android/view/KeyEvent?hl=en#getRepeatCount()">KeyEvent.getRepeatCount()</a>
220-
*/
221-
public final int repeatCount;
222165
/**
223166
* The Android key event that this Flutter key event was created from.
224167
*
@@ -233,44 +176,15 @@ public FlutterKeyEvent(@NonNull KeyEvent androidKeyEvent) {
233176

234177
public FlutterKeyEvent(
235178
@NonNull KeyEvent androidKeyEvent, @Nullable Character complexCharacter) {
236-
this(
237-
androidKeyEvent.getDeviceId(),
238-
androidKeyEvent.getFlags(),
239-
androidKeyEvent.getUnicodeChar(0x0),
240-
androidKeyEvent.getUnicodeChar(),
241-
androidKeyEvent.getKeyCode(),
242-
complexCharacter,
243-
androidKeyEvent.getScanCode(),
244-
androidKeyEvent.getMetaState(),
245-
androidKeyEvent.getSource(),
246-
androidKeyEvent.getRepeatCount(),
247-
androidKeyEvent);
179+
this(androidKeyEvent.getUnicodeChar(0x0), complexCharacter, androidKeyEvent);
248180
}
249181

250182
public FlutterKeyEvent(
251-
int deviceId,
252-
int flags,
253-
int plainCodePoint,
254-
int codePoint,
255-
int keyCode,
256-
@Nullable Character complexCharacter,
257-
int scanCode,
258-
int metaState,
259-
int source,
260-
int repeatCount,
261-
KeyEvent event) {
262-
this.deviceId = deviceId;
263-
this.flags = flags;
183+
int plainCodePoint, @Nullable Character complexCharacter, KeyEvent event) {
264184
this.plainCodePoint = plainCodePoint;
265-
this.codePoint = codePoint;
266-
this.keyCode = keyCode;
267185
this.complexCharacter = complexCharacter;
268-
this.scanCode = scanCode;
269-
this.metaState = metaState;
270-
this.source = source;
271-
this.repeatCount = repeatCount;
272186
this.event = event;
273-
InputDevice device = InputDevice.getDevice(deviceId);
187+
InputDevice device = InputDevice.getDevice(event.getDeviceId());
274188
if (device != null) {
275189
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
276190
this.vendorId = device.getVendorId();

0 commit comments

Comments
 (0)