Rename SemanticsFlags to SemanticsFlag (#13994)

to align with `SemanticsAction` and other enum-like types.
diff --git a/bin/internal/engine.version b/bin/internal/engine.version
index 609a229..92982be 100644
--- a/bin/internal/engine.version
+++ b/bin/internal/engine.version
@@ -1 +1 @@
-6a724f0d3e22d41246baf3447d7ba2c9ff886765
+16e365e7224f3d295f065e85df11060f011a74c5
diff --git a/packages/flutter/lib/src/semantics/semantics.dart b/packages/flutter/lib/src/semantics/semantics.dart
index c921f96..a4271cb 100644
--- a/packages/flutter/lib/src/semantics/semantics.dart
+++ b/packages/flutter/lib/src/semantics/semantics.dart
@@ -4,7 +4,7 @@
 
 import 'dart:typed_data';
 import 'dart:ui' as ui;
-import 'dart:ui' show Offset, Rect, SemanticsAction, SemanticsFlags,
+import 'dart:ui' show Offset, Rect, SemanticsAction, SemanticsFlag,
        TextDirection;
 
 import 'package:flutter/foundation.dart';
@@ -106,7 +106,7 @@
        assert(increasedValue == '' || textDirection != null, 'A SemanticsData object with increasedValue "$increasedValue" had a null textDirection.'),
        assert(rect != null);
 
-  /// A bit field of [SemanticsFlags] that apply to this node.
+  /// A bit field of [SemanticsFlag]s that apply to this node.
   final int flags;
 
   /// A bit field of [SemanticsAction]s that apply to this node.
@@ -157,7 +157,7 @@
   final Matrix4 transform;
 
   /// Whether [flags] contains the given flag.
-  bool hasFlag(SemanticsFlags flag) => (flags & flag.index) != 0;
+  bool hasFlag(SemanticsFlag flag) => (flags & flag.index) != 0;
 
   /// Whether [actions] contains the given action.
   bool hasAction(SemanticsAction action) => (actions & action.index) != 0;
@@ -178,7 +178,7 @@
     properties.add(new IterableProperty<String>('actions', actionSummary, ifEmpty: null));
 
     final List<String> flagSummary = <String>[];
-    for (SemanticsFlags flag in SemanticsFlags.values.values) {
+    for (SemanticsFlag flag in SemanticsFlag.values.values) {
       if ((flags & flag.index) != 0)
         flagSummary.add(describeEnum(flag));
     }
@@ -856,7 +856,7 @@
 
   int _flags = _kEmptyConfig._flags;
 
-  bool _hasFlag(SemanticsFlags flag) => _flags & flag.index != 0;
+  bool _hasFlag(SemanticsFlag flag) => _flags & flag.index != 0;
 
   /// A textual description of this node.
   ///
@@ -1089,14 +1089,14 @@
     }
     final List<String> actions = _actions.keys.map((SemanticsAction action) => describeEnum(action)).toList()..sort();
     properties.add(new IterableProperty<String>('actions', actions, ifEmpty: null));
-    if (_hasFlag(SemanticsFlags.hasEnabledState))
-      properties.add(new FlagProperty('isEnabled', value: _hasFlag(SemanticsFlags.isEnabled), ifFalse: 'disabled'));
-    if (_hasFlag(SemanticsFlags.hasCheckedState))
-      properties.add(new FlagProperty('isChecked', value: _hasFlag(SemanticsFlags.isChecked), ifTrue: 'checked', ifFalse: 'unchecked'));
-    properties.add(new FlagProperty('isSelected', value: _hasFlag(SemanticsFlags.isSelected), ifTrue: 'selected'));
-    properties.add(new FlagProperty('isFocused', value: _hasFlag(SemanticsFlags.isFocused), ifTrue: 'focused'));
-    properties.add(new FlagProperty('isButton', value: _hasFlag(SemanticsFlags.isButton), ifTrue: 'button'));
-    properties.add(new FlagProperty('isTextField', value: _hasFlag(SemanticsFlags.isTextField), ifTrue: 'textField'));
+    if (_hasFlag(SemanticsFlag.hasEnabledState))
+      properties.add(new FlagProperty('isEnabled', value: _hasFlag(SemanticsFlag.isEnabled), ifFalse: 'disabled'));
+    if (_hasFlag(SemanticsFlag.hasCheckedState))
+      properties.add(new FlagProperty('isChecked', value: _hasFlag(SemanticsFlag.isChecked), ifTrue: 'checked', ifFalse: 'unchecked'));
+    properties.add(new FlagProperty('isSelected', value: _hasFlag(SemanticsFlag.isSelected), ifTrue: 'selected'));
+    properties.add(new FlagProperty('isFocused', value: _hasFlag(SemanticsFlag.isFocused), ifTrue: 'focused'));
+    properties.add(new FlagProperty('isButton', value: _hasFlag(SemanticsFlag.isButton), ifTrue: 'button'));
+    properties.add(new FlagProperty('isTextField', value: _hasFlag(SemanticsFlag.isTextField), ifTrue: 'textField'));
     properties.add(new StringProperty('label', _label, defaultValue: ''));
     properties.add(new StringProperty('value', _value, defaultValue: ''));
     properties.add(new StringProperty('increasedValue', _increasedValue, defaultValue: ''));
@@ -1747,9 +1747,9 @@
   }
 
   /// Whether the owning [RenderObject] is selected (true) or not (false).
-  bool get isSelected => _hasFlag(SemanticsFlags.isSelected);
+  bool get isSelected => _hasFlag(SemanticsFlag.isSelected);
   set isSelected(bool value) {
-    _setFlag(SemanticsFlags.isSelected, value);
+    _setFlag(SemanticsFlag.isSelected, value);
   }
 
   /// Whether the owning [RenderObject] is currently enabled.
@@ -1763,10 +1763,10 @@
   ///
   /// The getter will return null if the owning [RenderObject] doesn't support
   /// the concept of being enabled/disabled.
-  bool get isEnabled => _hasFlag(SemanticsFlags.hasEnabledState) ? _hasFlag(SemanticsFlags.isEnabled) : null;
+  bool get isEnabled => _hasFlag(SemanticsFlag.hasEnabledState) ? _hasFlag(SemanticsFlag.isEnabled) : null;
   set isEnabled(bool value) {
-    _setFlag(SemanticsFlags.hasEnabledState, true);
-    _setFlag(SemanticsFlags.isEnabled, value);
+    _setFlag(SemanticsFlag.hasEnabledState, true);
+    _setFlag(SemanticsFlag.isEnabled, value);
   }
 
   /// If this node has Boolean state that can be controlled by the user, whether
@@ -1777,28 +1777,28 @@
   ///
   /// The getter returns null if the owning [RenderObject] does not have
   /// checked/unchecked state.
-  bool get isChecked => _hasFlag(SemanticsFlags.hasCheckedState) ? _hasFlag(SemanticsFlags.isChecked) : null;
+  bool get isChecked => _hasFlag(SemanticsFlag.hasCheckedState) ? _hasFlag(SemanticsFlag.isChecked) : null;
   set isChecked(bool value) {
-    _setFlag(SemanticsFlags.hasCheckedState, true);
-    _setFlag(SemanticsFlags.isChecked, value);
+    _setFlag(SemanticsFlag.hasCheckedState, true);
+    _setFlag(SemanticsFlag.isChecked, value);
   }
 
   /// Whether the owning [RenderObject] currently holds the user's focus.
-  bool get isFocused => _hasFlag(SemanticsFlags.isFocused);
+  bool get isFocused => _hasFlag(SemanticsFlag.isFocused);
   set isFocused(bool value) {
-    _setFlag(SemanticsFlags.isFocused, value);
+    _setFlag(SemanticsFlag.isFocused, value);
   }
 
   /// Whether the owning [RenderObject] is a button (true) or not (false).
-  bool get isButton => _hasFlag(SemanticsFlags.isButton);
+  bool get isButton => _hasFlag(SemanticsFlag.isButton);
   set isButton(bool value) {
-    _setFlag(SemanticsFlags.isButton, value);
+    _setFlag(SemanticsFlag.isButton, value);
   }
 
   /// Whether the owning [RenderObject] is a text field.
-  bool get isTextField => _hasFlag(SemanticsFlags.isTextField);
+  bool get isTextField => _hasFlag(SemanticsFlag.isTextField);
   set isTextField(bool value) {
-    _setFlag(SemanticsFlags.isTextField, value);
+    _setFlag(SemanticsFlag.isTextField, value);
   }
 
   // TAGS
@@ -1836,7 +1836,7 @@
   // INTERNAL FLAG MANAGEMENT
 
   int _flags = 0;
-  void _setFlag(SemanticsFlags flag, bool value) {
+  void _setFlag(SemanticsFlag flag, bool value) {
     if (value) {
       _flags |= flag.index;
     } else {
@@ -1845,7 +1845,7 @@
     _hasBeenAnnotated = true;
   }
 
-  bool _hasFlag(SemanticsFlags flag) => (_flags & flag.index) != 0;
+  bool _hasFlag(SemanticsFlag flag) => (_flags & flag.index) != 0;
 
   // CONFIGURATION COMBINATION LOGIC
 
diff --git a/packages/flutter/lib/src/widgets/semantics_debugger.dart b/packages/flutter/lib/src/widgets/semantics_debugger.dart
index d5bb632..1fffa70 100644
--- a/packages/flutter/lib/src/widgets/semantics_debugger.dart
+++ b/packages/flutter/lib/src/widgets/semantics_debugger.dart
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 import 'dart:math' as math;
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 import 'dart:ui' as ui show window;
 
 import 'package:flutter/foundation.dart';
@@ -200,8 +200,8 @@
   final List<String> annotations = <String>[];
 
   bool wantsTap = false;
-  if (data.hasFlag(SemanticsFlags.hasCheckedState)) {
-    annotations.add(data.hasFlag(SemanticsFlags.isChecked) ? 'checked' : 'unchecked');
+  if (data.hasFlag(SemanticsFlag.hasCheckedState)) {
+    annotations.add(data.hasFlag(SemanticsFlag.isChecked) ? 'checked' : 'unchecked');
     wantsTap = true;
   }
 
diff --git a/packages/flutter/test/cupertino/button_test.dart b/packages/flutter/test/cupertino/button_test.dart
index a6f24ed..67f4740 100644
--- a/packages/flutter/test/cupertino/button_test.dart
+++ b/packages/flutter/test/cupertino/button_test.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/rendering.dart';
 import 'package:flutter/cupertino.dart';
@@ -189,7 +189,7 @@
           new TestSemantics.rootChild(
             actions: SemanticsAction.tap.index,
             label: 'ABC',
-            flags: SemanticsFlags.isButton.index,
+            flags: SemanticsFlag.isButton.index,
           )
         ],
       ),
diff --git a/packages/flutter/test/material/buttons_test.dart b/packages/flutter/test/material/buttons_test.dart
index 22f213a..8f0e7f8 100644
--- a/packages/flutter/test/material/buttons_test.dart
+++ b/packages/flutter/test/material/buttons_test.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/rendering.dart';
 import 'package:flutter/material.dart';
@@ -37,7 +37,7 @@
             label: 'ABC',
             rect: new Rect.fromLTRB(0.0, 0.0, 88.0, 36.0),
             transform: new Matrix4.translationValues(356.0, 282.0, 0.0),
-            flags: SemanticsFlags.isButton.index,
+            flags: SemanticsFlag.isButton.index,
           )
         ],
       ),
@@ -71,7 +71,7 @@
             label: 'ABC',
             rect: new Rect.fromLTRB(0.0, 0.0, 88.0, 36.0),
             transform: new Matrix4.translationValues(356.0, 282.0, 0.0),
-            flags: SemanticsFlags.isButton.index,
+            flags: SemanticsFlag.isButton.index,
           )
         ]
       ),
diff --git a/packages/flutter/test/material/card_test.dart b/packages/flutter/test/material/card_test.dart
index 7be4191..8124f2d 100644
--- a/packages/flutter/test/material/card_test.dart
+++ b/packages/flutter/test/material/card_test.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/rendering.dart';
 import 'package:flutter/material.dart';
@@ -49,7 +49,7 @@
                 label: 'Button',
                 textDirection: TextDirection.ltr,
                 actions: SemanticsAction.tap.index,
-                flags: SemanticsFlags.isButton.index,
+                flags: SemanticsFlag.isButton.index,
               ),
             ],
           ),
diff --git a/packages/flutter/test/material/control_list_tile_test.dart b/packages/flutter/test/material/control_list_tile_test.dart
index 36776cb..dfda3e8 100644
--- a/packages/flutter/test/material/control_list_tile_test.dart
+++ b/packages/flutter/test/material/control_list_tile_test.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/material.dart';
@@ -101,11 +101,11 @@
           id: 1,
           rect: new Rect.fromLTWH(0.0, 0.0, 800.0, 56.0),
           transform: null,
-          flags: <SemanticsFlags>[
-            SemanticsFlags.hasCheckedState,
-            SemanticsFlags.isChecked,
-            SemanticsFlags.hasEnabledState,
-            SemanticsFlags.isEnabled
+          flags: <SemanticsFlag>[
+            SemanticsFlag.hasCheckedState,
+            SemanticsFlag.isChecked,
+            SemanticsFlag.hasEnabledState,
+            SemanticsFlag.isEnabled
           ],
           actions: SemanticsAction.tap.index,
           label: 'aaa\nAAA',
@@ -114,11 +114,11 @@
           id: 4,
           rect: new Rect.fromLTWH(0.0, 0.0, 800.0, 56.0),
           transform: new Matrix4.translationValues(0.0, 56.0, 0.0),
-          flags: <SemanticsFlags>[
-            SemanticsFlags.hasCheckedState,
-            SemanticsFlags.isChecked,
-            SemanticsFlags.hasEnabledState,
-            SemanticsFlags.isEnabled
+          flags: <SemanticsFlag>[
+            SemanticsFlag.hasCheckedState,
+            SemanticsFlag.isChecked,
+            SemanticsFlag.hasEnabledState,
+            SemanticsFlag.isEnabled
           ],
           actions: SemanticsAction.tap.index,
           label: 'bbb\nBBB',
@@ -127,10 +127,10 @@
           id: 7,
           rect: new Rect.fromLTWH(0.0, 0.0, 800.0, 56.0),
           transform: new Matrix4.translationValues(0.0, 112.0, 0.0),
-          flags: <SemanticsFlags>[
-            SemanticsFlags.hasCheckedState,
-            SemanticsFlags.hasEnabledState,
-            SemanticsFlags.isEnabled
+          flags: <SemanticsFlag>[
+            SemanticsFlag.hasCheckedState,
+            SemanticsFlag.hasEnabledState,
+            SemanticsFlag.isEnabled
           ],
           actions: SemanticsAction.tap.index,
           label: 'CCC\nccc',
diff --git a/packages/flutter/test/material/date_picker_test.dart b/packages/flutter/test/material/date_picker_test.dart
index 0d651fb..f104bfa 100644
--- a/packages/flutter/test/material/date_picker_test.dart
+++ b/packages/flutter/test/material/date_picker_test.dart
@@ -394,7 +394,7 @@
             textDirection: TextDirection.ltr,
           ),
           new TestSemantics(
-            flags: <SemanticsFlags>[SemanticsFlags.isSelected],
+            flags: <SemanticsFlag>[SemanticsFlag.isSelected],
             actions: <SemanticsAction>[SemanticsAction.tap],
             label: r'Fri, Jan 15',
             textDirection: TextDirection.ltr,
@@ -479,7 +479,7 @@
                             textDirection: TextDirection.ltr,
                           ),
                           new TestSemantics(
-                            flags: <SemanticsFlags>[SemanticsFlags.isSelected],
+                            flags: <SemanticsFlag>[SemanticsFlag.isSelected],
                             actions: <SemanticsAction>[SemanticsAction.tap],
                             label: r'15, Friday, January 15, 2016',
                             textDirection: TextDirection.ltr,
@@ -573,25 +573,25 @@
             ],
           ),
           new TestSemantics(
-            flags: <SemanticsFlags>[SemanticsFlags.isButton],
+            flags: <SemanticsFlag>[SemanticsFlag.isButton],
             actions: <SemanticsAction>[SemanticsAction.tap],
             label: r'Previous month December 2015',
             textDirection: TextDirection.ltr,
           ),
           new TestSemantics(
-            flags: <SemanticsFlags>[SemanticsFlags.isButton],
+            flags: <SemanticsFlag>[SemanticsFlag.isButton],
             actions: <SemanticsAction>[SemanticsAction.tap],
             label: r'Next month February 2016',
             textDirection: TextDirection.ltr,
           ),
           new TestSemantics(
-            flags: <SemanticsFlags>[SemanticsFlags.isButton],
+            flags: <SemanticsFlag>[SemanticsFlag.isButton],
             actions: <SemanticsAction>[SemanticsAction.tap],
             label: r'CANCEL',
             textDirection: TextDirection.ltr,
           ),
           new TestSemantics(
-            flags: <SemanticsFlags>[SemanticsFlags.isButton],
+            flags: <SemanticsFlag>[SemanticsFlag.isButton],
             actions: <SemanticsAction>[SemanticsAction.tap],
             label: r'OK',
             textDirection: TextDirection.ltr,
diff --git a/packages/flutter/test/material/icon_button_test.dart b/packages/flutter/test/material/icon_button_test.dart
index 77c3c13..7fff066 100644
--- a/packages/flutter/test/material/icon_button_test.dart
+++ b/packages/flutter/test/material/icon_button_test.dart
@@ -292,7 +292,7 @@
         new TestSemantics.rootChild(
           rect: new Rect.fromLTRB(0.0, 0.0, 48.0, 48.0),
           actions: <SemanticsAction>[SemanticsAction.tap],
-          flags: <SemanticsFlags>[SemanticsFlags.isButton],
+          flags: <SemanticsFlag>[SemanticsFlag.isButton],
           label: 'link',
         )
       ]
diff --git a/packages/flutter/test/material/list_tile_test.dart b/packages/flutter/test/material/list_tile_test.dart
index 7598360..f56b0a0 100644
--- a/packages/flutter/test/material/list_tile_test.dart
+++ b/packages/flutter/test/material/list_tile_test.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/material.dart';
 import 'package:flutter/rendering.dart';
@@ -361,23 +361,23 @@
         children: <TestSemantics>[
           new TestSemantics.rootChild(
             label: 'one',
-            flags: <SemanticsFlags>[
-              SemanticsFlags.hasEnabledState,
-              SemanticsFlags.isEnabled,
+            flags: <SemanticsFlag>[
+              SemanticsFlag.hasEnabledState,
+              SemanticsFlag.isEnabled,
             ],
           ),
           new TestSemantics.rootChild(
             label: 'two',
-            flags: <SemanticsFlags>[
-              SemanticsFlags.isSelected,
-              SemanticsFlags.hasEnabledState,
-              SemanticsFlags.isEnabled,
+            flags: <SemanticsFlag>[
+              SemanticsFlag.isSelected,
+              SemanticsFlag.hasEnabledState,
+              SemanticsFlag.isEnabled,
             ],
           ),
           new TestSemantics.rootChild(
             label: 'three',
-            flags: <SemanticsFlags>[
-              SemanticsFlags.hasEnabledState,
+            flags: <SemanticsFlag>[
+              SemanticsFlag.hasEnabledState,
             ],
           ),
         ]
diff --git a/packages/flutter/test/material/tabs_test.dart b/packages/flutter/test/material/tabs_test.dart
index bbcb215..b890e40 100644
--- a/packages/flutter/test/material/tabs_test.dart
+++ b/packages/flutter/test/material/tabs_test.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags, SemanticsAction;
+import 'dart:ui' show SemanticsFlag, SemanticsAction;
 
 import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/material.dart';
@@ -1214,7 +1214,7 @@
             new TestSemantics(
               id: 2,
               actions: SemanticsAction.tap.index,
-              flags: SemanticsFlags.isSelected.index,
+              flags: SemanticsFlag.isSelected.index,
               label: 'TAB #0\nTab 1 of 2',
               rect: new Rect.fromLTRB(0.0, 0.0, 108.0, kTextTabBarHeight),
               transform: new Matrix4.translationValues(0.0, 276.0, 0.0),
@@ -1464,7 +1464,7 @@
             new TestSemantics(
               id: 24,
               actions: SemanticsAction.tap.index,
-              flags: SemanticsFlags.isSelected.index,
+              flags: SemanticsFlag.isSelected.index,
               label: 'Semantics override 0\nTab 1 of 2',
               rect: new Rect.fromLTRB(0.0, 0.0, 108.0, kTextTabBarHeight),
               transform: new Matrix4.translationValues(0.0, 276.0, 0.0),
diff --git a/packages/flutter/test/material/text_field_test.dart b/packages/flutter/test/material/text_field_test.dart
index 375bd2a..338dc0c 100644
--- a/packages/flutter/test/material/text_field_test.dart
+++ b/packages/flutter/test/material/text_field_test.dart
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 import 'dart:async';
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
@@ -1666,7 +1666,7 @@
       ),
     );
 
-    expect(semantics, includesNodeWith(flags: <SemanticsFlags>[SemanticsFlags.isTextField]));
+    expect(semantics, includesNodeWith(flags: <SemanticsFlag>[SemanticsFlag.isTextField]));
   });
 
   testWidgets('Caret works when maxLines is null', (WidgetTester tester) async {
diff --git a/packages/flutter/test/material/user_accounts_drawer_header_test.dart b/packages/flutter/test/material/user_accounts_drawer_header_test.dart
index c304c34..999e4d2 100644
--- a/packages/flutter/test/material/user_accounts_drawer_header_test.dart
+++ b/packages/flutter/test/material/user_accounts_drawer_header_test.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/material.dart';
 import 'package:flutter/rendering.dart';
@@ -69,7 +69,7 @@
 void main() {
   testWidgets('UserAccountsDrawerHeader test', (WidgetTester tester) async {
     await pumpTestWidget(tester);
-    
+
     expect(find.text('A'), findsOneWidget);
     expect(find.text('B'), findsOneWidget);
     expect(find.text('C'), findsOneWidget);
@@ -351,7 +351,7 @@
                   textDirection: TextDirection.ltr,
                 ),
                 new TestSemantics(
-                  flags: <SemanticsFlags>[SemanticsFlags.isButton],
+                  flags: <SemanticsFlag>[SemanticsFlag.isButton],
                   actions: <SemanticsAction>[SemanticsAction.tap],
                   label: r'Show accounts',
                   textDirection: TextDirection.ltr,
diff --git a/packages/flutter/test/widgets/editable_text_test.dart b/packages/flutter/test/widgets/editable_text_test.dart
index 6ba476c..077ace6 100644
--- a/packages/flutter/test/widgets/editable_text_test.dart
+++ b/packages/flutter/test/widgets/editable_text_test.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/rendering.dart';
 import 'package:flutter_test/flutter_test.dart';
@@ -277,13 +277,13 @@
       ),
     );
 
-    expect(semantics, includesNodeWith(flags: <SemanticsFlags>[SemanticsFlags.isTextField]));
+    expect(semantics, includesNodeWith(flags: <SemanticsFlag>[SemanticsFlag.isTextField]));
 
     await tester.tap(find.byType(EditableText));
     await tester.idle();
     await tester.pump();
 
-    expect(semantics, includesNodeWith(flags: <SemanticsFlags>[SemanticsFlags.isTextField, SemanticsFlags.isFocused]));
+    expect(semantics, includesNodeWith(flags: <SemanticsFlag>[SemanticsFlag.isTextField, SemanticsFlag.isFocused]));
   });
 
   testWidgets('EditableText includes text as value in semantics', (WidgetTester tester) async {
@@ -309,7 +309,7 @@
     );
 
     expect(semantics, includesNodeWith(
-      flags: <SemanticsFlags>[SemanticsFlags.isTextField],
+      flags: <SemanticsFlag>[SemanticsFlag.isTextField],
       value: value1,
     ));
 
@@ -319,7 +319,7 @@
     await tester.pump();
 
     expect(semantics, includesNodeWith(
-      flags: <SemanticsFlags>[SemanticsFlags.isTextField],
+      flags: <SemanticsFlag>[SemanticsFlag.isTextField],
       value: value2,
     ));
   });
diff --git a/packages/flutter/test/widgets/implicit_semantics_test.dart b/packages/flutter/test/widgets/implicit_semantics_test.dart
index 30fc771..3de457a 100644
--- a/packages/flutter/test/widgets/implicit_semantics_test.dart
+++ b/packages/flutter/test/widgets/implicit_semantics_test.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
@@ -233,17 +233,17 @@
               children: <TestSemantics>[
                 new TestSemantics(
                   id: 6,
-                  flags: SemanticsFlags.isSelected.index,
+                  flags: SemanticsFlag.isSelected.index,
                   label: 'node 1',
                 ),
                 new TestSemantics(
                   id: 7,
-                  flags: SemanticsFlags.isSelected.index,
+                  flags: SemanticsFlag.isSelected.index,
                   label: 'node 2',
                 ),
                 new TestSemantics(
                   id: 8,
-                  flags: SemanticsFlags.isSelected.index,
+                  flags: SemanticsFlag.isSelected.index,
                   label: 'node 3',
                 ),
               ],
diff --git a/packages/flutter/test/widgets/semantics_1_test.dart b/packages/flutter/test/widgets/semantics_1_test.dart
index 516e081..8e849bc 100644
--- a/packages/flutter/test/widgets/semantics_1_test.dart
+++ b/packages/flutter/test/widgets/semantics_1_test.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/material.dart';
 import 'package:flutter/rendering.dart';
@@ -36,7 +36,7 @@
           id: 1,
           label: 'test1',
           rect: TestSemantics.fullScreen,
-          flags: SemanticsFlags.isSelected.index,
+          flags: SemanticsFlag.isSelected.index,
         )
       ]
     )));
@@ -78,7 +78,7 @@
           id: 1,
           label: 'child1',
           rect: TestSemantics.fullScreen,
-          flags: SemanticsFlags.isSelected.index,
+          flags: SemanticsFlag.isSelected.index,
         )
       ],
     )));
@@ -124,13 +124,13 @@
               id: 2,
               label: 'child1',
               rect: new Rect.fromLTRB(0.0, 0.0, 800.0, 10.0),
-              flags: SemanticsFlags.isSelected.index,
+              flags: SemanticsFlag.isSelected.index,
             ),
             new TestSemantics(
               id: 3,
               label: 'child2',
               rect: new Rect.fromLTRB(0.0, 0.0, 800.0, 10.0),
-              flags: SemanticsFlags.isSelected.index,
+              flags: SemanticsFlag.isSelected.index,
             ),
           ],
         ),
@@ -174,7 +174,7 @@
           id: 1,
           label: 'child1',
           rect: TestSemantics.fullScreen,
-          flags: SemanticsFlags.isSelected.index,
+          flags: SemanticsFlag.isSelected.index,
         )
       ],
     )));
@@ -220,13 +220,13 @@
               id: 4,
               label: 'child1',
               rect: new Rect.fromLTRB(0.0, 0.0, 800.0, 10.0),
-              flags: SemanticsFlags.isSelected.index,
+              flags: SemanticsFlag.isSelected.index,
             ),
             new TestSemantics(
               id: 3,
               label: 'child2',
               rect: new Rect.fromLTRB(0.0, 0.0, 800.0, 10.0),
-              flags: SemanticsFlags.isSelected.index,
+              flags: SemanticsFlag.isSelected.index,
             ),
           ],
         ),
diff --git a/packages/flutter/test/widgets/semantics_2_test.dart b/packages/flutter/test/widgets/semantics_2_test.dart
index 71c3830..68e4348 100644
--- a/packages/flutter/test/widgets/semantics_2_test.dart
+++ b/packages/flutter/test/widgets/semantics_2_test.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/material.dart';
 import 'package:flutter/rendering.dart';
@@ -60,13 +60,13 @@
               id: 2,
               label: 'child1',
               rect: new Rect.fromLTRB(0.0, 0.0, 800.0, 10.0),
-              flags: SemanticsFlags.isSelected.index,
+              flags: SemanticsFlag.isSelected.index,
             ),
             new TestSemantics(
               id: 3,
               label: 'child2',
               rect: new Rect.fromLTRB(0.0, 0.0, 800.0, 10.0),
-              flags: SemanticsFlags.isSelected.index,
+              flags: SemanticsFlag.isSelected.index,
             ),
           ],
         ),
@@ -110,7 +110,7 @@
           id: 1,
           label: 'child1',
           rect: TestSemantics.fullScreen,
-          flags: SemanticsFlags.isSelected.index,
+          flags: SemanticsFlag.isSelected.index,
         )
       ],
     )));
@@ -156,13 +156,13 @@
               id: 4,
               label: 'child1',
               rect: new Rect.fromLTRB(0.0, 0.0, 800.0, 10.0),
-              flags: SemanticsFlags.isSelected.index,
+              flags: SemanticsFlag.isSelected.index,
             ),
             new TestSemantics(
               id: 3,
               label: 'child2',
               rect: new Rect.fromLTRB(0.0, 0.0, 800.0, 10.0),
-              flags: SemanticsFlags.isSelected.index,
+              flags: SemanticsFlag.isSelected.index,
             ),
           ],
         ),
diff --git a/packages/flutter/test/widgets/semantics_3_test.dart b/packages/flutter/test/widgets/semantics_3_test.dart
index ded3709..a3d21fa 100644
--- a/packages/flutter/test/widgets/semantics_3_test.dart
+++ b/packages/flutter/test/widgets/semantics_3_test.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
@@ -37,7 +37,7 @@
         children: <TestSemantics>[
           new TestSemantics.rootChild(
             id: 1,
-            flags: SemanticsFlags.hasCheckedState.index | SemanticsFlags.isChecked.index,
+            flags: SemanticsFlag.hasCheckedState.index | SemanticsFlag.isChecked.index,
             label: 'test',
             rect: TestSemantics.fullScreen,
           )
@@ -62,7 +62,7 @@
         children: <TestSemantics>[
           new TestSemantics.rootChild(
             id: 1,
-            flags: SemanticsFlags.hasCheckedState.index | SemanticsFlags.isChecked.index,
+            flags: SemanticsFlag.hasCheckedState.index | SemanticsFlag.isChecked.index,
             rect: TestSemantics.fullScreen,
           ),
         ]
@@ -116,7 +116,7 @@
         children: <TestSemantics>[
           new TestSemantics.rootChild(
             id: 1,
-            flags: SemanticsFlags.hasCheckedState.index | SemanticsFlags.isChecked.index,
+            flags: SemanticsFlag.hasCheckedState.index | SemanticsFlag.isChecked.index,
             label: 'test',
             rect: TestSemantics.fullScreen,
           )
diff --git a/packages/flutter/test/widgets/semantics_4_test.dart b/packages/flutter/test/widgets/semantics_4_test.dart
index ab1cd27..854093f 100644
--- a/packages/flutter/test/widgets/semantics_4_test.dart
+++ b/packages/flutter/test/widgets/semantics_4_test.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
@@ -64,12 +64,12 @@
             children: <TestSemantics>[
               new TestSemantics(
                 id: 3,
-                flags: SemanticsFlags.hasCheckedState.index | SemanticsFlags.isChecked.index,
+                flags: SemanticsFlag.hasCheckedState.index | SemanticsFlag.isChecked.index,
                 rect: TestSemantics.fullScreen,
               ),
               new TestSemantics(
                 id: 4,
-                flags: SemanticsFlags.hasCheckedState.index,
+                flags: SemanticsFlag.hasCheckedState.index,
                 rect: TestSemantics.fullScreen,
               ),
             ]
@@ -120,7 +120,7 @@
           new TestSemantics.rootChild(
             id: 2,
             label: 'L2',
-            flags: SemanticsFlags.hasCheckedState.index | SemanticsFlags.isChecked.index,
+            flags: SemanticsFlag.hasCheckedState.index | SemanticsFlag.isChecked.index,
             rect: TestSemantics.fullScreen,
           ),
         ],
@@ -160,7 +160,7 @@
           new TestSemantics.rootChild(
             id: 2,
             label: 'L2',
-            flags: SemanticsFlags.hasCheckedState.index | SemanticsFlags.isChecked.index,
+            flags: SemanticsFlag.hasCheckedState.index | SemanticsFlag.isChecked.index,
             rect: TestSemantics.fullScreen,
           ),
         ],
diff --git a/packages/flutter/test/widgets/semantics_7_test.dart b/packages/flutter/test/widgets/semantics_7_test.dart
index 981667a..3d9d214 100644
--- a/packages/flutter/test/widgets/semantics_7_test.dart
+++ b/packages/flutter/test/widgets/semantics_7_test.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
@@ -56,14 +56,14 @@
         children: <TestSemantics>[
           new TestSemantics.rootChild(
             id: 1,
-            flags: SemanticsFlags.hasCheckedState.index | SemanticsFlags.isChecked.index,
+            flags: SemanticsFlag.hasCheckedState.index | SemanticsFlag.isChecked.index,
             label: label,
             rect: TestSemantics.fullScreen,
           ),
           // IDs 2 and 3 are used up by the nodes that get merged in
           new TestSemantics.rootChild(
             id: 4,
-            flags: SemanticsFlags.hasCheckedState.index | SemanticsFlags.isChecked.index,
+            flags: SemanticsFlag.hasCheckedState.index | SemanticsFlag.isChecked.index,
             label: label,
             rect: TestSemantics.fullScreen,
           ),
@@ -112,14 +112,14 @@
         children: <TestSemantics>[
           new TestSemantics.rootChild(
             id: 1,
-            flags: SemanticsFlags.hasCheckedState.index | SemanticsFlags.isChecked.index,
+            flags: SemanticsFlag.hasCheckedState.index | SemanticsFlag.isChecked.index,
             label: label,
             rect: TestSemantics.fullScreen,
           ),
           // IDs 2 and 3 are used up by the nodes that get merged in
           new TestSemantics.rootChild(
             id: 4,
-            flags: SemanticsFlags.hasCheckedState.index | SemanticsFlags.isChecked.index,
+            flags: SemanticsFlag.hasCheckedState.index | SemanticsFlag.isChecked.index,
             label: label,
             rect: TestSemantics.fullScreen,
           ),
diff --git a/packages/flutter/test/widgets/semantics_8_test.dart b/packages/flutter/test/widgets/semantics_8_test.dart
index 81f3f45..e5e5fb8 100644
--- a/packages/flutter/test/widgets/semantics_8_test.dart
+++ b/packages/flutter/test/widgets/semantics_8_test.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
@@ -42,7 +42,7 @@
         children: <TestSemantics>[
           new TestSemantics.rootChild(
             id: 1,
-            flags: SemanticsFlags.hasCheckedState.index | SemanticsFlags.isChecked.index,
+            flags: SemanticsFlag.hasCheckedState.index | SemanticsFlag.isChecked.index,
             label: 'label',
             textDirection: TextDirection.ltr,
             rect: TestSemantics.fullScreen,
@@ -80,7 +80,7 @@
         children: <TestSemantics>[
           new TestSemantics.rootChild(
             id: 1,
-            flags: SemanticsFlags.hasCheckedState.index | SemanticsFlags.isChecked.index,
+            flags: SemanticsFlag.hasCheckedState.index | SemanticsFlag.isChecked.index,
             label: 'label',
             textDirection: TextDirection.ltr,
             rect: TestSemantics.fullScreen,
diff --git a/packages/flutter/test/widgets/semantics_tester.dart b/packages/flutter/test/widgets/semantics_tester.dart
index 3faa708..58791af 100644
--- a/packages/flutter/test/widgets/semantics_tester.dart
+++ b/packages/flutter/test/widgets/semantics_tester.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/foundation.dart';
 import 'package:flutter/rendering.dart';
@@ -46,7 +46,7 @@
     this.transform,
     this.children: const <TestSemantics>[],
     Iterable<SemanticsTag> tags,
-  }) : assert(flags is int || flags is List<SemanticsFlags>),
+  }) : assert(flags is int || flags is List<SemanticsFlag>),
        assert(actions is int || actions is List<SemanticsAction>),
        assert(label != null),
        assert(value != null),
@@ -71,7 +71,7 @@
     this.children: const <TestSemantics>[],
     Iterable<SemanticsTag> tags,
   }) : id = 0,
-       assert(flags is int || flags is List<SemanticsFlags>),
+       assert(flags is int || flags is List<SemanticsFlag>),
        assert(actions is int || actions is List<SemanticsAction>),
        assert(label != null),
        assert(increasedValue != null),
@@ -105,7 +105,7 @@
     Matrix4 transform,
     this.children: const <TestSemantics>[],
     Iterable<SemanticsTag> tags,
-  }) : assert(flags is int || flags is List<SemanticsFlags>),
+  }) : assert(flags is int || flags is List<SemanticsFlag>),
        assert(actions is int || actions is List<SemanticsAction>),
        assert(label != null),
        assert(value != null),
@@ -122,12 +122,12 @@
   /// they are created.
   final int id;
 
-  /// The [SemanticsFlags] set on this node.
+  /// The [SemanticsFlag]s set on this node.
   ///
   /// There are two ways to specify this property: as an `int` that encodes the
-  /// flags as a bit field, or as a `List<SemanticsFlags>` that are _on_.
+  /// flags as a bit field, or as a `List<SemanticsFlag>` that are _on_.
   ///
-  /// Using `List<SemanticsFlags>` is recommended due to better readability.
+  /// Using `List<SemanticsFlag>` is recommended due to better readability.
   final dynamic flags;
 
   /// The [SemanticsAction]s set on this node.
@@ -223,7 +223,7 @@
 
     final int flagsBitmask = flags is int
       ? flags
-      : flags.fold<int>(0, (int bitmask, SemanticsFlags flag) => bitmask | flag.index);
+      : flags.fold<int>(0, (int bitmask, SemanticsFlag flag) => bitmask | flag.index);
     if (flagsBitmask != nodeData.flags)
       return fail('expected node id $id to have flags $flags but found flags ${nodeData.flags}.');
 
@@ -277,8 +277,8 @@
     buf.writeln('${indent}new $runtimeType(');
     if (id != null)
       buf.writeln('$indent  id: $id,');
-    if (flags is int && flags != 0 || flags is List<SemanticsFlags> && flags.isNotEmpty)
-      buf.writeln('$indent  flags: ${SemanticsTester._flagsToSemanticsFlagsExpression(flags)},');
+    if (flags is int && flags != 0 || flags is List<SemanticsFlag> && flags.isNotEmpty)
+      buf.writeln('$indent  flags: ${SemanticsTester._flagsToSemanticsFlagExpression(flags)},');
     if (actions is int && actions != 0 || actions is List<SemanticsAction> && actions.isNotEmpty)
       buf.writeln('$indent  actions: ${SemanticsTester._actionsToSemanticsActionExpression(actions)},');
     if (label != null && label != '')
@@ -347,7 +347,7 @@
     String value,
     TextDirection textDirection,
     List<SemanticsAction> actions,
-    List<SemanticsFlags> flags,
+    List<SemanticsFlag> flags,
     SemanticsNode ancestor,
   }) {
     bool checkNode(SemanticsNode node) {
@@ -364,7 +364,7 @@
           return false;
       }
       if (flags != null) {
-        final int expectedFlags = flags.fold(0, (int value, SemanticsFlags flag) => value | flag.index);
+        final int expectedFlags = flags.fold(0, (int value, SemanticsFlag flag) => value | flag.index);
         final int actualFlags = node.getSemanticsData().flags;
         if (expectedFlags != actualFlags)
           return false;
@@ -440,15 +440,15 @@
     return _generateSemanticsTestForNode(node, 0);
   }
 
-  static String _flagsToSemanticsFlagsExpression(dynamic flags) {
-    Iterable<SemanticsFlags> list;
+  static String _flagsToSemanticsFlagExpression(dynamic flags) {
+    Iterable<SemanticsFlag> list;
     if (flags is int) {
-      list = SemanticsFlags.values.values
-          .where((SemanticsFlags flag) => (flag.index & flags) != 0);
+      list = SemanticsFlag.values.values
+          .where((SemanticsFlag flag) => (flag.index & flags) != 0);
     } else {
       list = flags;
     }
-    return '<SemanticsFlags>[${list.join(', ')}]';
+    return '<SemanticsFlag>[${list.join(', ')}]';
   }
 
   static String _actionsToSemanticsActionExpression(dynamic actions) {
@@ -470,7 +470,7 @@
     final SemanticsData nodeData = node.getSemanticsData();
     buf.writeln('new TestSemantics(');
     if (nodeData.flags != 0)
-      buf.writeln('  flags: ${_flagsToSemanticsFlagsExpression(nodeData.flags)},');
+      buf.writeln('  flags: ${_flagsToSemanticsFlagExpression(nodeData.flags)},');
     if (nodeData.actions != 0)
       buf.writeln('  actions: ${_actionsToSemanticsActionExpression(nodeData.actions)},');
     if (node.label != null && node.label.isNotEmpty)
@@ -555,7 +555,7 @@
   final String value;
   final TextDirection textDirection;
   final List<SemanticsAction> actions;
-  final List<SemanticsFlags> flags;
+  final List<SemanticsFlag> flags;
 
   @override
   bool matches(covariant SemanticsTester item, Map<dynamic, dynamic> matchState) {
@@ -603,7 +603,7 @@
   String value,
   TextDirection textDirection,
   List<SemanticsAction> actions,
-  List<SemanticsFlags> flags,
+  List<SemanticsFlag> flags,
 }) {
   return new _IncludesNodeWith(
     label: label,
diff --git a/packages/flutter/test/widgets/semantics_tester_generateTestSemanticsExpressionForCurrentSemanticsTree_test.dart b/packages/flutter/test/widgets/semantics_tester_generateTestSemanticsExpressionForCurrentSemanticsTree_test.dart
index e03c291..b9206c5 100644
--- a/packages/flutter/test/widgets/semantics_tester_generateTestSemanticsExpressionForCurrentSemanticsTree_test.dart
+++ b/packages/flutter/test/widgets/semantics_tester_generateTestSemanticsExpressionForCurrentSemanticsTree_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:async';
 import 'dart:io';
-import 'dart:ui' show SemanticsFlags;
+import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/material.dart';
 import 'package:flutter/semantics.dart';
@@ -113,7 +113,7 @@
                       textDirection: TextDirection.ltr,
                     ),
                     new TestSemantics(
-                      flags: <SemanticsFlags>[SemanticsFlags.hasCheckedState, SemanticsFlags.isChecked, SemanticsFlags.isSelected],
+                      flags: <SemanticsFlag>[SemanticsFlag.hasCheckedState, SemanticsFlag.isChecked, SemanticsFlag.isSelected],
                       actions: <SemanticsAction>[SemanticsAction.tap, SemanticsAction.decrease],
                       label: r'‪Interactive text‬',
                       value: r'test-value',