Prefer enum over class. (#123312)

Convert `AndroidSemanticsAction` to enum.
This commit is contained in:
Bernardo Ferrari 2023-03-23 16:46:37 -03:00 committed by GitHub
parent 716d252462
commit 100cf21e27
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 69 additions and 133 deletions

View File

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:meta/meta.dart';
/// Class name constants which correspond to the class names used by the
/// Android accessibility bridge.
class AndroidClassName {
@ -30,9 +28,72 @@ class AndroidClassName {
}
/// Action constants which correspond to `AccessibilityAction` in Android.
@immutable
class AndroidSemanticsAction {
const AndroidSemanticsAction._(this.id);
enum AndroidSemanticsAction {
/// Matches `AccessibilityAction.ACTION_FOCUS`.
focus(_kFocusIndex),
/// Matches `AccessibilityAction.ACTION_CLEAR_FOCUS`.
clearFocus(_kClearFocusIndex),
/// Matches `AccessibilityAction.ACTION_SELECT`.
select(_kSelectIndex),
/// Matches `AccessibilityAction.ACTION_CLEAR_SELECTION`.
clearSelection(_kClearSelectionIndex),
/// Matches `AccessibilityAction.ACTION_CLICK`.
click(_kClickIndex),
/// Matches `AccessibilityAction.ACTION_LONG_CLICK`.
longClick(_kLongClickIndex),
/// Matches `AccessibilityAction.ACTION_ACCESSIBILITY_FOCUS`.
accessibilityFocus(_kAccessibilityFocusIndex),
/// Matches `AccessibilityAction.ACTION_CLEAR_ACCESSIBILITY_FOCUS`.
clearAccessibilityFocus(_kClearAccessibilityFocusIndex),
/// Matches `AccessibilityAction.ACTION_NEXT_AT_MOVEMENT_GRANULARITY`.
nextAtMovementGranularity(_kNextAtMovementGranularityIndex),
/// Matches `AccessibilityAction.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY`.
previousAtMovementGranularity(_kPreviousAtMovementGranularityIndex),
/// Matches `AccessibilityAction.ACTION_NEXT_HTML_ELEMENT`.
nextHtmlElement(_kNextHtmlElementIndex),
/// Matches `AccessibilityAction.ACTION_PREVIOUS_HTML_ELEMENT`.
previousHtmlElement(_kPreviousHtmlElementIndex),
/// Matches `AccessibilityAction.ACTION_SCROLL_FORWARD`.
scrollForward(_kScrollForwardIndex),
/// Matches `AccessibilityAction.ACTION_SCROLL_BACKWARD`.
scrollBackward(_kScrollBackwardIndex),
/// Matches `AccessibilityAction.ACTION_CUT`.
cut(_kCutIndex),
/// Matches `AccessibilityAction.ACTION_COPY`.
copy(_kCopyIndex),
/// Matches `AccessibilityAction.ACTION_PASTE`.
paste(_kPasteIndex),
/// Matches `AccessibilityAction.ACTION_SET_SELECTION`.
setSelection(_kSetSelectionIndex),
/// Matches `AccessibilityAction.ACTION_EXPAND`.
expand(_kExpandIndex),
/// Matches `AccessibilityAction.ACTION_COLLAPSE`.
collapse(_kCollapseIndex),
/// Matches `AccessibilityAction.SET_TEXT`.
setText(_kSetText);
const AndroidSemanticsAction(this.id);
/// The Android id of the action.
final int id;
@ -59,119 +120,6 @@ class AndroidSemanticsAction {
static const int _kCollapseIndex = 1 << 19;
static const int _kSetText = 1 << 21;
/// Matches `AccessibilityAction.ACTION_FOCUS`.
static const AndroidSemanticsAction focus = AndroidSemanticsAction._(_kFocusIndex);
/// Matches `AccessibilityAction.ACTION_CLEAR_FOCUS`.
static const AndroidSemanticsAction clearFocus = AndroidSemanticsAction._(_kClearFocusIndex);
/// Matches `AccessibilityAction.ACTION_SELECT`.
static const AndroidSemanticsAction select = AndroidSemanticsAction._(_kSelectIndex);
/// Matches `AccessibilityAction.ACTION_CLEAR_SELECTION`.
static const AndroidSemanticsAction clearSelection = AndroidSemanticsAction._(_kClearSelectionIndex);
/// Matches `AccessibilityAction.ACTION_CLICK`.
static const AndroidSemanticsAction click = AndroidSemanticsAction._(_kClickIndex);
/// Matches `AccessibilityAction.ACTION_LONG_CLICK`.
static const AndroidSemanticsAction longClick = AndroidSemanticsAction._(_kLongClickIndex);
/// Matches `AccessibilityAction.ACTION_ACCESSIBILITY_FOCUS`.
static const AndroidSemanticsAction accessibilityFocus = AndroidSemanticsAction._(_kAccessibilityFocusIndex);
/// Matches `AccessibilityAction.ACTION_CLEAR_ACCESSIBILITY_FOCUS`.
static const AndroidSemanticsAction clearAccessibilityFocus = AndroidSemanticsAction._(_kClearAccessibilityFocusIndex);
/// Matches `AccessibilityAction.ACTION_NEXT_AT_MOVEMENT_GRANULARITY`.
static const AndroidSemanticsAction nextAtMovementGranularity = AndroidSemanticsAction._(_kNextAtMovementGranularityIndex);
/// Matches `AccessibilityAction.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY`.
static const AndroidSemanticsAction previousAtMovementGranularity = AndroidSemanticsAction._(_kPreviousAtMovementGranularityIndex);
/// Matches `AccessibilityAction.ACTION_NEXT_HTML_ELEMENT`.
static const AndroidSemanticsAction nextHtmlElement = AndroidSemanticsAction._(_kNextHtmlElementIndex);
/// Matches `AccessibilityAction.ACTION_PREVIOUS_HTML_ELEMENT`.
static const AndroidSemanticsAction previousHtmlElement = AndroidSemanticsAction._(_kPreviousHtmlElementIndex);
/// Matches `AccessibilityAction.ACTION_SCROLL_FORWARD`.
static const AndroidSemanticsAction scrollForward = AndroidSemanticsAction._(_kScrollForwardIndex);
/// Matches `AccessibilityAction.ACTION_SCROLL_BACKWARD`.
static const AndroidSemanticsAction scrollBackward = AndroidSemanticsAction._(_kScrollBackwardIndex);
/// Matches `AccessibilityAction.ACTION_CUT`.
static const AndroidSemanticsAction cut = AndroidSemanticsAction._(_kCutIndex);
/// Matches `AccessibilityAction.ACTION_COPY`.
static const AndroidSemanticsAction copy = AndroidSemanticsAction._(_kCopyIndex);
/// Matches `AccessibilityAction.ACTION_PASTE`.
static const AndroidSemanticsAction paste = AndroidSemanticsAction._(_kPasteIndex);
/// Matches `AccessibilityAction.ACTION_SET_SELECTION`.
static const AndroidSemanticsAction setSelection = AndroidSemanticsAction._(_kSetSelectionIndex);
/// Matches `AccessibilityAction.ACTION_EXPAND`.
static const AndroidSemanticsAction expand = AndroidSemanticsAction._(_kExpandIndex);
/// Matches `AccessibilityAction.ACTION_COLLAPSE`.
static const AndroidSemanticsAction collapse = AndroidSemanticsAction._(_kCollapseIndex);
/// Matches `AccessibilityAction.SET_TEXT`.
static const AndroidSemanticsAction setText = AndroidSemanticsAction._(_kSetText);
@override
String toString() {
switch (id) {
case _kFocusIndex:
return 'AndroidSemanticsAction.focus';
case _kClearFocusIndex:
return 'AndroidSemanticsAction.clearFocus';
case _kSelectIndex:
return 'AndroidSemanticsAction.select';
case _kClearSelectionIndex:
return 'AndroidSemanticsAction.clearSelection';
case _kClickIndex:
return 'AndroidSemanticsAction.click';
case _kLongClickIndex:
return 'AndroidSemanticsAction.longClick';
case _kAccessibilityFocusIndex:
return 'AndroidSemanticsAction.accessibilityFocus';
case _kClearAccessibilityFocusIndex:
return 'AndroidSemanticsAction.clearAccessibilityFocus';
case _kNextAtMovementGranularityIndex:
return 'AndroidSemanticsAction.nextAtMovementGranularity';
case _kPreviousAtMovementGranularityIndex:
return 'AndroidSemanticsAction.previousAtMovementGranularity';
case _kNextHtmlElementIndex:
return 'AndroidSemanticsAction.nextHtmlElement';
case _kPreviousHtmlElementIndex:
return 'AndroidSemanticsAction.previousHtmlElement';
case _kScrollForwardIndex:
return 'AndroidSemanticsAction.scrollForward';
case _kScrollBackwardIndex:
return 'AndroidSemanticsAction.scrollBackward';
case _kCutIndex:
return 'AndroidSemanticsAction.cut';
case _kCopyIndex:
return 'AndroidSemanticsAction.copy';
case _kPasteIndex:
return 'AndroidSemanticsAction.paste';
case _kSetSelectionIndex:
return 'AndroidSemanticsAction.setSelection';
case _kExpandIndex:
return 'AndroidSemanticsAction.expand';
case _kCollapseIndex:
return 'AndroidSemanticsAction.collapse';
case _kSetText:
return 'AndroidSemanticsAction.setText';
default:
throw UnimplementedError();
}
}
static const Map<int, AndroidSemanticsAction> _kActionById = <int, AndroidSemanticsAction>{
_kFocusIndex: focus,
_kClearFocusIndex: clearFocus,
@ -196,18 +144,6 @@ class AndroidSemanticsAction {
_kSetText: setText,
};
@override
int get hashCode => id.hashCode;
@override
bool operator ==(Object other) {
if (other.runtimeType != runtimeType) {
return false;
}
return other is AndroidSemanticsAction
&& other.id == id;
}
/// Creates a new [AndroidSemanticsAction] from an integer `value`.
///
/// Returns `null` if the id is not a known Android accessibility action.

View File

@ -1390,7 +1390,7 @@ abstract class RenderBox extends RenderObject {
} else {
debugTimelineArguments = <String, String>{};
}
debugTimelineArguments!['intrinsics dimension'] = describeEnum(dimension);
debugTimelineArguments!['intrinsics dimension'] = dimension.name;
debugTimelineArguments!['intrinsics argument'] = '$argument';
return true;
}());

View File

@ -524,7 +524,7 @@ class _GlowController extends ChangeNotifier {
@override
String toString() {
return '_GlowController(color: $color, axis: ${describeEnum(axis)})';
return '_GlowController(color: $color, axis: ${axis.name})';
}
}

View File

@ -2118,7 +2118,7 @@ mixin WidgetInspectorService {
if (parentData is FlexParentData) {
additionalJson['flexFactor'] = parentData.flex!;
additionalJson['flexFit'] =
describeEnum(parentData.fit ?? FlexFit.tight);
(parentData.fit ?? FlexFit.tight).name;
} else if (parentData is BoxParentData) {
final Offset offset = parentData.offset;
additionalJson['parentData'] = <String, Object>{