Add custom actions to the reorderable list (#20108)

diff --git a/packages/flutter/lib/src/material/material_localizations.dart b/packages/flutter/lib/src/material/material_localizations.dart
index f2607f3..024c092 100644
--- a/packages/flutter/lib/src/material/material_localizations.dart
+++ b/packages/flutter/lib/src/material/material_localizations.dart
@@ -27,10 +27,8 @@
 //    flutter_localizations package, you must first add it to the English
 //    translations (lib/src/l10n/material_en.arb), including a description, then
 //    you must add it to every other language (all the other *.arb files in that
-//    same directory), including a best guess as to the translation, e.g.
-//    obtained by optimistic use of Google Translate
-//    (https://translate.google.com/). After that you have to re-generate
-//    lib/src/l10n/localizations.dart by running
+//    same directory), listing the translation as `TBD`. After that you have to
+//    re-generate lib/src/l10n/localizations.dart by running
 //    `dart dev/tools/gen_localizations.dart --overwrite`. There is a README
 //    file with further information in the lib/src/l10n/ directory.
 //
@@ -279,6 +277,30 @@
   /// shows the list of accounts.
   String get showAccountsLabel;
 
+  /// The semantics label used for [ReorderableList] to reorder an item in the
+  /// list to the start of the list.
+  String get reorderItemToStart;
+
+  /// The semantics label used for [ReorderableList] to reorder an item in the
+  /// list to the end of the list.
+  String get reorderItemToEnd;
+
+  /// The semantics label used for [ReorderableList] to reorder an item in the
+  /// list one space up the list.
+  String get reorderItemUp;
+
+  /// The semantics label used for [ReorderableList] to reorder an item in the
+  /// list one space down the list.
+  String get reorderItemDown;
+
+  /// The semantics label used for [ReorderableList] to reorder an item in the
+  /// list one space left in the list.
+  String get reorderItemLeft;
+
+  /// The semantics label used for [ReorderableList] to reorder an item in the
+  /// list one space right in the list.
+  String get reorderItemRight;
+
   /// The `MaterialLocalizations` from the closest [Localizations] instance
   /// that encloses the given context.
   ///
@@ -641,6 +663,24 @@
   @override
   String get showAccountsLabel => 'Show accounts';
 
+  @override
+  String get reorderItemUp => 'Move up';
+
+  @override
+  String get reorderItemDown => 'Move down';
+
+  @override
+  String get reorderItemLeft => 'Move left';
+
+  @override
+  String get reorderItemRight => 'Move right';
+
+  @override
+  String get reorderItemToEnd => 'Move to the end';
+
+  @override
+  String get reorderItemToStart => 'Move to the start';
+
   /// Creates an object that provides US English resource values for the material
   /// library widgets.
   ///
diff --git a/packages/flutter/lib/src/material/reorderable_list.dart b/packages/flutter/lib/src/material/reorderable_list.dart
index 8ba06f2..983694c 100644
--- a/packages/flutter/lib/src/material/reorderable_list.dart
+++ b/packages/flutter/lib/src/material/reorderable_list.dart
@@ -8,6 +8,7 @@
 import 'package:flutter/rendering.dart';
 
 import 'material.dart';
+import 'material_localizations.dart';
 
 /// The callback used by [ReorderableListView] to move an item to a new
 /// position in a list.
@@ -310,13 +311,10 @@
   // Handles up the logic for dragging and reordering items in the list.
   Widget _wrap(Widget toWrap, int index, BoxConstraints constraints) {
     assert(toWrap.key != null);
-    // We create a global key based on both the child key and index
-    // so that when we reorder the list, a key doesn't get created twice.
     final GlobalObjectKey keyIndexGlobalKey = new GlobalObjectKey(toWrap.key);
     // We pass the toWrapWithGlobalKey into the Draggable so that when a list
     // item gets dragged, the accessibility framework can preserve the selected
     // state of the dragging item.
-    final Widget toWrapWithGlobalKey = new KeyedSubtree(key: keyIndexGlobalKey, child: toWrap);
 
     // Starts dragging toWrap.
     void onDragStarted() {
@@ -330,11 +328,11 @@
       });
     }
 
-    // Drops toWrap into the last position it was hovering over.
-    void onDragEnded() {
+    // Places the value from startIndex one space before the element at endIndex.
+    void reorder(int startIndex, int endIndex) {
       setState(() {
-        if (_dragStartIndex != _currentIndex)
-          widget.onReorder(_dragStartIndex, _currentIndex);
+        if (startIndex != endIndex)
+          widget.onReorder(startIndex, endIndex);
         // Animates leftover space in the drop area closed.
         // TODO(djshuckerow): bring the animation in line with the Material
         // specifications.
@@ -344,7 +342,64 @@
       });
     }
 
+    // Drops toWrap into the last position it was hovering over.
+    void onDragEnded() {
+      reorder(_dragStartIndex, _currentIndex);
+    }
+
+    Widget wrapWithSemantics() {
+      // First, determine which semantics actions apply.
+      final Map<CustomSemanticsAction, VoidCallback> semanticsActions = <CustomSemanticsAction, VoidCallback>{};
+
+      // Create the appropriate semantics actions.
+      void moveToStart() => reorder(index, 0);
+      void moveToEnd() => reorder(index, widget.children.length);
+      void moveBefore() => reorder(index, index - 1);
+      // To move after, we go to index+2 because we are moving it to the space
+      // before index+2, which is after the space at index+1.
+      void moveAfter() => reorder(index, index + 2);
+
+      final MaterialLocalizations localizations = MaterialLocalizations.of(context);
+
+      // If the item can move to before its current position in the list.
+      if (index > 0) {
+        semanticsActions[new CustomSemanticsAction(label: localizations.reorderItemToStart)] = moveToStart;
+        String reorderItemBefore = localizations.reorderItemUp;
+        if (widget.scrollDirection == Axis.horizontal) {
+          reorderItemBefore = Directionality.of(context) == TextDirection.ltr
+              ? localizations.reorderItemLeft
+              : localizations.reorderItemRight;
+        }
+        semanticsActions[new CustomSemanticsAction(label: reorderItemBefore)] = moveBefore;
+      }
+
+      // If the item can move to after its current position in the list.
+      if (index < widget.children.length - 1) {
+        String reorderItemAfter = localizations.reorderItemDown;
+        if (widget.scrollDirection == Axis.horizontal) {
+          reorderItemAfter = Directionality.of(context) == TextDirection.ltr
+              ? localizations.reorderItemRight
+              : localizations.reorderItemLeft;
+        }
+        semanticsActions[new CustomSemanticsAction(label: reorderItemAfter)] = moveAfter;
+        semanticsActions[new CustomSemanticsAction(label: localizations.reorderItemToEnd)] = moveToEnd;
+      }
+
+      // We pass toWrap with a GlobalKey into the Draggable so that when a list
+      // item gets dragged, the accessibility framework can preserve the selected
+      // state of the dragging item.
+      //
+      // We also apply the relevant custom accessibility actions for moving the item
+      // up, down, to the start, and to the end of the list.
+      return new KeyedSubtree(key: keyIndexGlobalKey, child: new Semantics(
+        customSemanticsActions: semanticsActions,
+        child: toWrap,
+      ));
+    }
+
     Widget buildDragTarget(BuildContext context, List<Key> acceptedCandidates, List<dynamic> rejectedCandidates) {
+      final Widget toWrapWithSemantics = wrapWithSemantics();
+
       // We build the draggable inside of a layout builder so that we can
       // constrain the size of the feedback dragging widget.
       Widget child = new LongPressDraggable<Key>(
@@ -358,10 +413,10 @@
           constraints: constraints,
           child: new Material(
             elevation: 6.0,
-            child: toWrapWithGlobalKey,
+            child: toWrapWithSemantics,
           ),
         ),
-        child: _dragging == toWrap.key ? const SizedBox() : toWrapWithGlobalKey,
+        child: _dragging == toWrap.key ? const SizedBox() : toWrapWithSemantics,
         childWhenDragging: const SizedBox(),
         dragAnchor: DragAnchor.child,
         onDragStarted: onDragStarted,
@@ -422,25 +477,22 @@
     }
 
     // We wrap the drag target in a Builder so that we can scroll to its specific context.
-    return new KeyedSubtree(
-      key: new Key('#$ReorderableListView|KeyedSubtree|${toWrap.key}'),
-      child:new Builder(builder: (BuildContext context) {
-        return new DragTarget<Key>(
-          builder: buildDragTarget,
-          onWillAccept: (Key toAccept) {
-            setState(() {
-              _nextIndex = index;
-              _requestAnimationToNextIndex();
-            });
-            _scrollTo(context);
-            // If the target is not the original starting point, then we will accept the drop.
-            return _dragging == toAccept && toAccept != toWrap.key;
-          },
-          onAccept: (Key accepted) {},
-          onLeave: (Key leaving) {},
-        );
-      }),
-    );
+    return new Builder(builder: (BuildContext context) {
+      return new DragTarget<Key>(
+        builder: buildDragTarget,
+        onWillAccept: (Key toAccept) {
+          setState(() {
+            _nextIndex = index;
+            _requestAnimationToNextIndex();
+          });
+          _scrollTo(context);
+          // If the target is not the original starting point, then we will accept the drop.
+          return _dragging == toAccept && toAccept != toWrap.key;
+        },
+        onAccept: (Key accepted) {},
+        onLeave: (Key leaving) {},
+      );
+    });
   }
 
   @override
diff --git a/packages/flutter/test/material/localizations_test.dart b/packages/flutter/test/material/localizations_test.dart
index df4bf3a..cea5406 100644
--- a/packages/flutter/test/material/localizations_test.dart
+++ b/packages/flutter/test/material/localizations_test.dart
@@ -35,6 +35,12 @@
     expect(localizations.dialogLabel, isNotNull);
     expect(localizations.alertDialogLabel, isNotNull);
     expect(localizations.searchFieldLabel, isNotNull);
+    expect(localizations.reorderItemUp, isNotNull);
+    expect(localizations.reorderItemDown, isNotNull);
+    expect(localizations.reorderItemLeft, isNotNull);
+    expect(localizations.reorderItemRight, isNotNull);
+    expect(localizations.reorderItemToEnd, isNotNull);
+    expect(localizations.reorderItemToStart, isNotNull);
 
     expect(localizations.aboutListTileTitle('FOO'), isNotNull);
     expect(localizations.aboutListTileTitle('FOO'), contains('FOO'));
diff --git a/packages/flutter/test/material/reorderable_list_test.dart b/packages/flutter/test/material/reorderable_list_test.dart
index cf6f463..4836770 100644
--- a/packages/flutter/test/material/reorderable_list_test.dart
+++ b/packages/flutter/test/material/reorderable_list_test.dart
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 import 'package:flutter/gestures.dart';
+import 'package:flutter/semantics.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:flutter/material.dart';
 
@@ -29,16 +30,19 @@
       );
     }
 
-    Widget build({Widget header, Axis scrollDirection = Axis.vertical}) {
+    Widget build({Widget header, Axis scrollDirection = Axis.vertical, TextDirection textDirection = TextDirection.ltr}) {
       return new MaterialApp(
-        home: new SizedBox(
-          height: itemHeight * 10,
-          width: itemHeight * 10,
-          child: new ReorderableListView(
-            header: header,
-            children: listItems.map(listItemToWidget).toList(),
-            scrollDirection: scrollDirection,
-            onReorder: onReorder,
+        home: new Directionality(
+          textDirection: textDirection,
+          child: new SizedBox(
+            height: itemHeight * 10,
+            width: itemHeight * 10,
+            child: new ReorderableListView(
+              header: header,
+              children: listItems.map(listItemToWidget).toList(),
+              scrollDirection: scrollDirection,
+              onReorder: onReorder,
+            ),
           ),
         ),
       );
@@ -169,7 +173,6 @@
         await tester.pump(kLongPressTimeout + kPressTimeout);
         await tester.pumpAndSettle();
         expect(getContentElement().size.height, kDraggingListHeight);
-
         // Move it
         await drag.moveTo(tester.getCenter(find.text('Last item')));
         await tester.pumpAndSettle();
@@ -220,6 +223,134 @@
         expect(findState(const Key('C')).checked, false);
         expect(findState(const Key('A')).checked, true);
       });
+
+
+      group('Accessibility (a11y/Semantics)', () {
+        Map<CustomSemanticsAction, VoidCallback> getSemanticsActions(int index) {
+          final Semantics semantics = find.ancestor(
+            of: find.byKey(new Key(listItems[index])),
+            matching: find.byType(Semantics),
+          ).evaluate().first.widget;
+          return semantics.properties.customSemanticsActions;
+        }
+
+        const CustomSemanticsAction moveToStart = CustomSemanticsAction(label: 'Move to the start');
+        const CustomSemanticsAction moveToEnd = CustomSemanticsAction(label: 'Move to the end');
+        const CustomSemanticsAction moveUp = CustomSemanticsAction(label: 'Move up');
+        const CustomSemanticsAction moveDown = CustomSemanticsAction(label: 'Move down');
+
+        testWidgets('Provides the correct accessibility actions in LTR and RTL modes', (WidgetTester tester) async {
+          // The a11y actions for a vertical list are the same in LTR and RTL modes.
+          final SemanticsHandle handle = tester.ensureSemantics();
+          for (TextDirection direction in TextDirection.values) {
+            await tester.pumpWidget(build());
+
+            // The first item can be moved down or to the end.
+            final Map<CustomSemanticsAction, VoidCallback> firstSemanticsActions = getSemanticsActions(0);
+            expect(firstSemanticsActions.length, 2, reason: 'The first list item should have 2 custom actions with $direction.');
+            expect(firstSemanticsActions.containsKey(moveToStart), false, reason: 'The first item cannot `Move to the start` with $direction.');
+            expect(firstSemanticsActions.containsKey(moveUp), false, reason: 'The first item cannot `Move up` with $direction.');
+            expect(firstSemanticsActions.containsKey(moveDown), true, reason: 'The first item should be able to `Move down` with $direction.');
+            expect(firstSemanticsActions.containsKey(moveToEnd), true, reason: 'The first item should be able to `Move to the end` with $direction.');
+
+            // Items in the middle can be moved to the start, end, up or down.
+            for (int i = 1; i < listItems.length - 1; i += 1) {
+              final Map<CustomSemanticsAction, VoidCallback> ithSemanticsActions = getSemanticsActions(i);
+              expect(ithSemanticsActions.length, 4, reason: 'List item $i should have 4 custom actions with $direction.');
+              expect(ithSemanticsActions.containsKey(moveToStart), true, reason: 'List item $i should be able to `Move to the start` with $direction.');
+              expect(ithSemanticsActions.containsKey(moveUp), true, reason: 'List item $i should be able to `Move up` with $direction.');
+              expect(ithSemanticsActions.containsKey(moveDown), true, reason: 'List item $i should be able to `Move down` with $direction.');
+              expect(ithSemanticsActions.containsKey(moveToEnd), true, reason: 'List item $i should be able to `Move to the end` with $direction.');
+            }
+
+            // The last item can be moved up or to the start.
+            final Map<CustomSemanticsAction, VoidCallback> lastSemanticsActions = getSemanticsActions(listItems.length - 1);
+            expect(lastSemanticsActions.length, 2, reason: 'The last list item should have 2 custom actions with $direction.');
+            expect(lastSemanticsActions.containsKey(moveToStart), true, reason: 'The last item should be able to `Move to the start` with $direction.');
+            expect(lastSemanticsActions.containsKey(moveUp), true, reason: 'The last item should be able to `Move up` with $direction.');
+            expect(lastSemanticsActions.containsKey(moveDown), false, reason: 'The last item cannot `Move down` with $direction.');
+            expect(lastSemanticsActions.containsKey(moveToEnd), false, reason: 'The last item cannot `Move to the end` with $direction.');
+          }
+          handle.dispose();
+        });
+
+        testWidgets('First item accessibility (a11y) actions work', (WidgetTester tester) async {
+          final SemanticsHandle handle = tester.ensureSemantics();
+          expect(listItems, orderedEquals(originalListItems));
+
+          // Test out move to end: move Item 1 to the end of the list.
+          await tester.pumpWidget(build());
+          Map<CustomSemanticsAction, VoidCallback> firstSemanticsActions = getSemanticsActions(0);
+          firstSemanticsActions[moveToEnd]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 2', 'Item 3', 'Item 4', 'Item 1']));
+
+          // Test out move after: move Item 2 (the current first item) one space down.
+          await tester.pumpWidget(build());
+          firstSemanticsActions = getSemanticsActions(0);
+          firstSemanticsActions[moveDown]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 3', 'Item 2', 'Item 4', 'Item 1']));
+
+          handle.dispose();
+        });
+
+        testWidgets('Middle item accessibility (a11y) actions work', (WidgetTester tester) async {
+          final SemanticsHandle handle = tester.ensureSemantics();
+          expect(listItems, orderedEquals(originalListItems));
+
+          // Test out move to end: move Item 2 to the end of the list.
+          await tester.pumpWidget(build());
+          Map<CustomSemanticsAction, VoidCallback> middleSemanticsActions = getSemanticsActions(1);
+          middleSemanticsActions[moveToEnd]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 1', 'Item 3', 'Item 4', 'Item 2']));
+
+          // Test out move after: move Item 3 (the current second item) one space down.
+          await tester.pumpWidget(build());
+          middleSemanticsActions = getSemanticsActions(1);
+          middleSemanticsActions[moveDown]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 1', 'Item 4', 'Item 3', 'Item 2']));
+
+          // Test out move after: move Item 3 (the current third item) one space up.
+          await tester.pumpWidget(build());
+          middleSemanticsActions = getSemanticsActions(2);
+          middleSemanticsActions[moveUp]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 1', 'Item 3', 'Item 4', 'Item 2']));
+
+          // Test out move to start: move Item 4 (the current third item) to the start of the list.
+          await tester.pumpWidget(build());
+          middleSemanticsActions = getSemanticsActions(2);
+          middleSemanticsActions[moveToStart]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 4', 'Item 1', 'Item 3', 'Item 2']));
+
+          handle.dispose();
+        });
+
+        testWidgets('Last item accessibility (a11y) actions work', (WidgetTester tester) async {
+          final SemanticsHandle handle = tester.ensureSemantics();
+          expect(listItems, orderedEquals(originalListItems));
+
+          // Test out move to start: move Item 4 to the start of the list.
+          await tester.pumpWidget(build());
+          Map<CustomSemanticsAction, VoidCallback> lastSemanticsActions = getSemanticsActions(listItems.length - 1);
+          lastSemanticsActions[moveToStart]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 4', 'Item 1', 'Item 2', 'Item 3']));
+
+          // Test out move up: move Item 3 (the current last item) one space up.
+          await tester.pumpWidget(build());
+          lastSemanticsActions = getSemanticsActions(listItems.length - 1);
+          lastSemanticsActions[moveUp]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 4', 'Item 1', 'Item 3', 'Item 2']));
+
+          handle.dispose();
+        });
+      });
     });
 
     group('in horizontal mode', () {
@@ -268,7 +399,6 @@
         await tester.pumpAndSettle();
         expect(find.text('Header Text'), findsOneWidget);
         expect(listItems, orderedEquals(<String>['Item 2', 'Item 3', 'Item 4', 'Item 1']));
-
         await tester.pumpWidget(build(header: const Text('Header Text'), scrollDirection: Axis.horizontal));
         await longPressDrag(
           tester,
@@ -340,7 +470,6 @@
         await tester.pump(kLongPressTimeout + kPressTimeout);
         await tester.pumpAndSettle();
         expect(getContentElement().size.width, kDraggingListWidth);
-
         // Move it
         await drag.moveTo(tester.getCenter(find.text('Last item')));
         await tester.pumpAndSettle();
@@ -394,6 +523,250 @@
         expect(findState(const Key('C')).checked, false);
         expect(findState(const Key('A')).checked, true);
       });
+
+      group('Accessibility (a11y/Semantics)', () {
+        Map<CustomSemanticsAction, VoidCallback> getSemanticsActions(int index) {
+          final Semantics semantics = find.ancestor(
+            of: find.byKey(new Key(listItems[index])),
+            matching: find.byType(Semantics),
+          ).evaluate().first.widget;
+          return semantics.properties.customSemanticsActions;
+        }
+
+        const CustomSemanticsAction moveToStart = CustomSemanticsAction(label: 'Move to the start');
+        const CustomSemanticsAction moveToEnd = CustomSemanticsAction(label: 'Move to the end');
+        const CustomSemanticsAction moveLeft = CustomSemanticsAction(label: 'Move left');
+        const CustomSemanticsAction moveRight = CustomSemanticsAction(label: 'Move right');
+
+        testWidgets('Provides the correct accessibility actions in LTR mode', (WidgetTester tester) async {
+          final SemanticsHandle handle = tester.ensureSemantics();
+
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal));
+
+          // The first item can be moved right or to the end.
+          final Map<CustomSemanticsAction, VoidCallback> firstSemanticsActions = getSemanticsActions(0);
+          expect(firstSemanticsActions.length, 2, reason: 'The first list item should have 2 custom actions.');
+          expect(firstSemanticsActions.containsKey(moveToStart), false, reason: 'The first item cannot `Move to the start`.');
+          expect(firstSemanticsActions.containsKey(moveLeft), false, reason: 'The first item cannot `Move left`.');
+          expect(firstSemanticsActions.containsKey(moveRight), true, reason: 'The first item should be able to `Move right`.');
+          expect(firstSemanticsActions.containsKey(moveToEnd), true, reason: 'The first item should be able to `Move to the end`.');
+
+          // Items in the middle can be moved to the start, end, left or right.
+          for (int i = 1; i < listItems.length - 1; i += 1) {
+            final Map<CustomSemanticsAction, VoidCallback> ithSemanticsActions = getSemanticsActions(i);
+            expect(ithSemanticsActions.length, 4, reason: 'List item $i should have 4 custom actions.');
+            expect(ithSemanticsActions.containsKey(moveToStart), true, reason: 'List item $i should be able to `Move to the start`.');
+            expect(ithSemanticsActions.containsKey(moveLeft), true, reason: 'List item $i should be able to `Move left`.');
+            expect(ithSemanticsActions.containsKey(moveRight), true, reason: 'List item $i should be able to `Move right`.');
+            expect(ithSemanticsActions.containsKey(moveToEnd), true, reason: 'List item $i should be able to `Move to the end`.');
+          }
+
+          // The last item can be moved left or to the start.
+          final Map<CustomSemanticsAction, VoidCallback> lastSemanticsActions = getSemanticsActions(listItems.length - 1);
+          expect(lastSemanticsActions.length, 2, reason: 'The last list item should have 2 custom actions.');
+          expect(lastSemanticsActions.containsKey(moveToStart), true, reason: 'The last item should be able to `Move to the start`.');
+          expect(lastSemanticsActions.containsKey(moveLeft), true, reason: 'The last item should be able to `Move left`.');
+          expect(lastSemanticsActions.containsKey(moveRight), false, reason: 'The last item cannot `Move right`.');
+          expect(lastSemanticsActions.containsKey(moveToEnd), false, reason: 'The last item cannot `Move to the end`.');
+          handle.dispose();
+        });
+
+        testWidgets('Provides the correct accessibility actions in Right-To-Left directionality', (WidgetTester tester) async {
+          // In RTL mode, the right is the start and the left is the end.
+          // The array representation is unchanged (LTR), but the direction of the motion actions is reversed.
+          final SemanticsHandle handle = tester.ensureSemantics();
+
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal, textDirection: TextDirection.rtl));
+
+          // The first item can be moved right or to the end.
+          final Map<CustomSemanticsAction, VoidCallback> firstSemanticsActions = getSemanticsActions(0);
+          expect(firstSemanticsActions.length, 2, reason: 'The first list item should have 2 custom actions.');
+          expect(firstSemanticsActions.containsKey(moveToStart), false, reason: 'The first item cannot `Move to the start`.');
+          expect(firstSemanticsActions.containsKey(moveRight), false, reason: 'The first item cannot `Move right`.');
+          expect(firstSemanticsActions.containsKey(moveLeft), true, reason: 'The first item should be able to `Move left`.');
+          expect(firstSemanticsActions.containsKey(moveToEnd), true, reason: 'The first item should be able to `Move to the end`.');
+
+          // Items in the middle can be moved to the start, end, left or right.
+          for (int i = 1; i < listItems.length - 1; i += 1) {
+            final Map<CustomSemanticsAction, VoidCallback> ithSemanticsActions = getSemanticsActions(i);
+            expect(ithSemanticsActions.length, 4, reason: 'List item $i should have 4 custom actions.');
+            expect(ithSemanticsActions.containsKey(moveToStart), true, reason: 'List item $i should be able to `Move to the start`.');
+            expect(ithSemanticsActions.containsKey(moveRight), true, reason: 'List item $i should be able to `Move right`.');
+            expect(ithSemanticsActions.containsKey(moveLeft), true, reason: 'List item $i should be able to `Move left`.');
+            expect(ithSemanticsActions.containsKey(moveToEnd), true, reason: 'List item $i should be able to `Move to the end`.');
+          }
+
+          // The last item can be moved left or to the start.
+          final Map<CustomSemanticsAction, VoidCallback> lastSemanticsActions = getSemanticsActions(listItems.length - 1);
+          expect(lastSemanticsActions.length, 2, reason: 'The last list item should have 2 custom actions.');
+          expect(lastSemanticsActions.containsKey(moveToStart), true, reason: 'The last item should be able to `Move to the start`.');
+          expect(lastSemanticsActions.containsKey(moveRight), true, reason: 'The last item should be able to `Move right`.');
+          expect(lastSemanticsActions.containsKey(moveLeft), false, reason: 'The last item cannot `Move left`.');
+          expect(lastSemanticsActions.containsKey(moveToEnd), false, reason: 'The last item cannot `Move to the end`.');
+          handle.dispose();
+        });
+
+        testWidgets('First item accessibility (a11y) actions work in LTR mode', (WidgetTester tester) async {
+          final SemanticsHandle handle = tester.ensureSemantics();
+          expect(listItems, orderedEquals(originalListItems));
+
+          // Test out move to end: move Item 1 to the end of the list.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal));
+          Map<CustomSemanticsAction, VoidCallback> firstSemanticsActions = getSemanticsActions(0);
+          firstSemanticsActions[moveToEnd]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 2', 'Item 3', 'Item 4', 'Item 1']));
+
+          // Test out move after: move Item 2 (the current first item) one space to the right.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal));
+          firstSemanticsActions = getSemanticsActions(0);
+          firstSemanticsActions[moveRight]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 3', 'Item 2', 'Item 4', 'Item 1']));
+
+          handle.dispose();
+        });
+
+        testWidgets('First item accessibility (a11y) actions work in Right-To-Left directionality', (WidgetTester tester) async {
+          // In RTL mode, the right is the start and the left is the end.
+          // The array representation is unchanged (LTR), but the direction of the motion actions is reversed.
+          final SemanticsHandle handle = tester.ensureSemantics();
+          expect(listItems, orderedEquals(originalListItems));
+
+          // Test out move to end: move Item 1 to the end of the list.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal, textDirection: TextDirection.rtl));
+          Map<CustomSemanticsAction, VoidCallback> firstSemanticsActions = getSemanticsActions(0);
+          firstSemanticsActions[moveToEnd]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 2', 'Item 3', 'Item 4', 'Item 1']));
+
+          // Test out move after: move Item 2 (the current first item) one space to the left.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal, textDirection: TextDirection.rtl));
+          firstSemanticsActions = getSemanticsActions(0);
+          firstSemanticsActions[moveLeft]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 3', 'Item 2', 'Item 4', 'Item 1']));
+
+          handle.dispose();
+        });
+
+        testWidgets('Middle item accessibility (a11y) actions work in LTR mode', (WidgetTester tester) async {
+          final SemanticsHandle handle = tester.ensureSemantics();
+          expect(listItems, orderedEquals(originalListItems));
+
+          // Test out move to end: move Item 2 to the end of the list.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal));
+          Map<CustomSemanticsAction, VoidCallback> middleSemanticsActions = getSemanticsActions(1);
+          middleSemanticsActions[moveToEnd]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 1', 'Item 3', 'Item 4', 'Item 2']));
+
+          // Test out move after: move Item 3 (the current second item) one space to the right.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal));
+          middleSemanticsActions = getSemanticsActions(1);
+          middleSemanticsActions[moveRight]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 1', 'Item 4', 'Item 3', 'Item 2']));
+
+          // Test out move after: move Item 3 (the current third item) one space to the left.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal));
+          middleSemanticsActions = getSemanticsActions(2);
+          middleSemanticsActions[moveLeft]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 1', 'Item 3', 'Item 4', 'Item 2']));
+
+          // Test out move to start: move Item 4 (the current third item) to the start of the list.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal));
+          middleSemanticsActions = getSemanticsActions(2);
+          middleSemanticsActions[moveToStart]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 4', 'Item 1', 'Item 3', 'Item 2']));
+
+          handle.dispose();
+        });
+
+        testWidgets('Middle item accessibility (a11y) actions work in Right-To-Left directionality', (WidgetTester tester) async {
+          // In RTL mode, the right is the start and the left is the end.
+          // The array representation is unchanged (LTR), but the direction of the motion actions is reversed.
+          final SemanticsHandle handle = tester.ensureSemantics();
+          expect(listItems, orderedEquals(originalListItems));
+
+          // Test out move to end: move Item 2 to the end of the list.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal, textDirection: TextDirection.rtl));
+          Map<CustomSemanticsAction, VoidCallback> middleSemanticsActions = getSemanticsActions(1);
+          middleSemanticsActions[moveToEnd]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 1', 'Item 3', 'Item 4', 'Item 2']));
+
+          // Test out move after: move Item 3 (the current second item) one space to the left.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal, textDirection: TextDirection.rtl));
+          middleSemanticsActions = getSemanticsActions(1);
+          middleSemanticsActions[moveLeft]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 1', 'Item 4', 'Item 3', 'Item 2']));
+
+          // Test out move after: move Item 3 (the current third item) one space to the right.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal, textDirection: TextDirection.rtl));
+          middleSemanticsActions = getSemanticsActions(2);
+          middleSemanticsActions[moveRight]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 1', 'Item 3', 'Item 4', 'Item 2']));
+
+          // Test out move to start: move Item 4 (the current third item) to the start of the list.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal, textDirection: TextDirection.rtl));
+          middleSemanticsActions = getSemanticsActions(2);
+          middleSemanticsActions[moveToStart]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 4', 'Item 1', 'Item 3', 'Item 2']));
+
+          handle.dispose();
+        });
+
+        testWidgets('Last item accessibility (a11y) actions work in LTR mode', (WidgetTester tester) async {
+          final SemanticsHandle handle = tester.ensureSemantics();
+          expect(listItems, orderedEquals(originalListItems));
+
+          // Test out move to start: move Item 4 to the start of the list.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal));
+          Map<CustomSemanticsAction, VoidCallback> lastSemanticsActions = getSemanticsActions(listItems.length - 1);
+          lastSemanticsActions[moveToStart]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 4', 'Item 1', 'Item 2', 'Item 3']));
+
+          // Test out move before: move Item 3 (the current last item) one space to the left.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal));
+          lastSemanticsActions = getSemanticsActions(listItems.length - 1);
+          lastSemanticsActions[moveLeft]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 4', 'Item 1', 'Item 3', 'Item 2']));
+
+          handle.dispose();
+        });
+
+        testWidgets('Last item accessibility (a11y) actions work in Right-To-Left directionality', (WidgetTester tester) async {
+          // In RTL mode, the right is the start and the left is the end.
+          // The array representation is unchanged (LTR), but the direction of the motion actions is reversed.
+          final SemanticsHandle handle = tester.ensureSemantics();
+          expect(listItems, orderedEquals(originalListItems));
+
+          // Test out move to start: move Item 4 to the start of the list.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal, textDirection: TextDirection.rtl));
+          Map<CustomSemanticsAction, VoidCallback> lastSemanticsActions = getSemanticsActions(listItems.length - 1);
+          lastSemanticsActions[moveToStart]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 4', 'Item 1', 'Item 2', 'Item 3']));
+
+          // Test out move before: move Item 3 (the current last item) one space to the right.
+          await tester.pumpWidget(build(scrollDirection: Axis.horizontal, textDirection: TextDirection.rtl));
+          lastSemanticsActions = getSemanticsActions(listItems.length - 1);
+          lastSemanticsActions[moveRight]();
+          await tester.pumpAndSettle();
+          expect(listItems, orderedEquals(<String>['Item 4', 'Item 1', 'Item 3', 'Item 2']));
+
+          handle.dispose();
+        });
+      });
+
     });
 
     // TODO(djshuckerow): figure out how to write a test for scrolling the list.
diff --git a/packages/flutter_localizations/lib/src/l10n/localizations.dart b/packages/flutter_localizations/lib/src/l10n/localizations.dart
index 5d97db0..3fcff27 100644
--- a/packages/flutter_localizations/lib/src/l10n/localizations.dart
+++ b/packages/flutter_localizations/lib/src/l10n/localizations.dart
@@ -126,6 +126,24 @@
   String get previousPageTooltip => r'الصفحة السابقة';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'عدد الصفوف في الصفحة:';
 
   @override
@@ -285,6 +303,24 @@
   String get previousPageTooltip => r'Предишната страница';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Редове на страница:';
 
   @override
@@ -444,6 +480,24 @@
   String get previousPageTooltip => r'Prethodna stranica';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Redaka po stranici:';
 
   @override
@@ -603,6 +657,24 @@
   String get previousPageTooltip => r'Pàgina anterior';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Files per pàgina:';
 
   @override
@@ -762,6 +834,24 @@
   String get previousPageTooltip => r'Předchozí stránka';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Počet řádků na stránku:';
 
   @override
@@ -921,6 +1011,24 @@
   String get previousPageTooltip => r'Forrige side';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Rækker pr. side:';
 
   @override
@@ -1080,6 +1188,24 @@
   String get previousPageTooltip => r'Vorherige Seite';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Zeilen pro Seite:';
 
   @override
@@ -1269,6 +1395,24 @@
   String get previousPageTooltip => r'Προηγούμενη σελίδα';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Σειρές ανά σελίδα:';
 
   @override
@@ -1428,6 +1572,24 @@
   String get previousPageTooltip => r'Previous page';
 
   @override
+  String get reorderItemDown => r'Move down';
+
+  @override
+  String get reorderItemLeft => r'Move left';
+
+  @override
+  String get reorderItemRight => r'Move right';
+
+  @override
+  String get reorderItemToEnd => r'Move to the end';
+
+  @override
+  String get reorderItemToStart => r'Move to the start';
+
+  @override
+  String get reorderItemUp => r'Move up';
+
+  @override
   String get rowsPerPageTitle => r'Rows per page:';
 
   @override
@@ -1848,6 +2010,24 @@
   String get previousPageTooltip => r'Página anterior';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Filas por página:';
 
   @override
@@ -3330,6 +3510,24 @@
   String get previousPageTooltip => r'Eelmine leht';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Ridu lehe kohta:';
 
   @override
@@ -3489,6 +3687,24 @@
   String get previousPageTooltip => r'صفحه قبل';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'ردیف در هر صفحه:';
 
   @override
@@ -3648,6 +3864,24 @@
   String get previousPageTooltip => r'Edellinen sivu';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Riviä/sivu:';
 
   @override
@@ -3807,6 +4041,24 @@
   String get previousPageTooltip => r'Nakaraang page';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Mga row bawat page:';
 
   @override
@@ -3966,6 +4218,24 @@
   String get previousPageTooltip => r'Page précédente';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Lignes par page :';
 
   @override
@@ -4152,6 +4422,24 @@
   String get previousPageTooltip => r'Vorherige Seite';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Zeilen pro Seite:';
 
   @override
@@ -4311,6 +4599,24 @@
   String get previousPageTooltip => r'הדף הקודם';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'שורות בכל דף:';
 
   @override
@@ -4470,6 +4776,24 @@
   String get previousPageTooltip => r'पिछला पेज';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'हर पेज में पंक्तियों की संख्या:';
 
   @override
@@ -4629,6 +4953,24 @@
   String get previousPageTooltip => r'Prethodna stranica';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Redaka po stranici:';
 
   @override
@@ -4788,6 +5130,24 @@
   String get previousPageTooltip => r'Előző oldal';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Oldalankénti sorszám:';
 
   @override
@@ -4947,6 +5307,24 @@
   String get previousPageTooltip => r'Halaman sebelumnya';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Baris per halaman:';
 
   @override
@@ -5106,6 +5484,24 @@
   String get previousPageTooltip => r'Pagina precedente';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Righe per pagina:';
 
   @override
@@ -5265,6 +5661,24 @@
   String get previousPageTooltip => r'前のページ';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'ページあたりの行数:';
 
   @override
@@ -5424,6 +5838,24 @@
   String get previousPageTooltip => r'이전 페이지';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'페이지당 행 수:';
 
   @override
@@ -5583,6 +6015,24 @@
   String get previousPageTooltip => r'Ankstesnis puslapis';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Eilučių puslapyje:';
 
   @override
@@ -5742,6 +6192,24 @@
   String get previousPageTooltip => r'Iepriekšējā lapa';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Rindas lapā:';
 
   @override
@@ -5901,6 +6369,24 @@
   String get previousPageTooltip => r'Halaman sebelumnya';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Baris setiap halaman:';
 
   @override
@@ -6060,6 +6546,24 @@
   String get previousPageTooltip => r'Forrige side';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Rader per side:';
 
   @override
@@ -6219,6 +6723,24 @@
   String get previousPageTooltip => r'Vorige pagina';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Rijen per pagina:';
 
   @override
@@ -6378,6 +6900,24 @@
   String get previousPageTooltip => r'Poprzednia strona';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Wiersze na stronie:';
 
   @override
@@ -6537,6 +7077,24 @@
   String get previousPageTooltip => r'مخکینی مخ';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'د هرې پاڼې پاڼې:';
 
   @override
@@ -6696,6 +7254,24 @@
   String get previousPageTooltip => r'Página anterior';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Linhas por página:';
 
   @override
@@ -6924,6 +7500,24 @@
   String get previousPageTooltip => r'Pagina anterioară';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Rânduri pe pagină:';
 
   @override
@@ -7083,6 +7677,24 @@
   String get previousPageTooltip => r'Предыдущая страница';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Строк на странице:';
 
   @override
@@ -7242,6 +7854,24 @@
   String get previousPageTooltip => r'Predchádzajúca stránka';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Počet riadkov na stránku:';
 
   @override
@@ -7401,6 +8031,24 @@
   String get previousPageTooltip => r'Prejšnja stran';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Vrstice na stran:';
 
   @override
@@ -7560,6 +8208,24 @@
   String get previousPageTooltip => r'Претходна страница';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Редова по страници:';
 
   @override
@@ -7857,6 +8523,24 @@
   String get previousPageTooltip => r'Föregående sida';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Rader per sida:';
 
   @override
@@ -8016,6 +8700,24 @@
   String get previousPageTooltip => r'หน้าก่อน';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'แถวต่อหน้า:';
 
   @override
@@ -8175,6 +8877,24 @@
   String get previousPageTooltip => r'Nakaraang page';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Mga row bawat page:';
 
   @override
@@ -8334,6 +9054,24 @@
   String get previousPageTooltip => r'Önceki sayfa';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Sayfa başına satır sayısı:';
 
   @override
@@ -8493,6 +9231,24 @@
   String get previousPageTooltip => r'Попередня сторінка';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Рядків на сторінці:';
 
   @override
@@ -8652,6 +9408,24 @@
   String get previousPageTooltip => r'گزشتہ صفحہ';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'قطاریں فی صفحہ:';
 
   @override
@@ -8811,6 +9585,24 @@
   String get previousPageTooltip => r'Trang trước';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'Số hàng mỗi trang:';
 
   @override
@@ -8970,6 +9762,24 @@
   String get previousPageTooltip => r'上一页';
 
   @override
+  String get reorderItemDown => r'TBD';
+
+  @override
+  String get reorderItemLeft => r'TBD';
+
+  @override
+  String get reorderItemRight => r'TBD';
+
+  @override
+  String get reorderItemToEnd => r'TBD';
+
+  @override
+  String get reorderItemToStart => r'TBD';
+
+  @override
+  String get reorderItemUp => r'TBD';
+
+  @override
   String get rowsPerPageTitle => r'每页行数:';
 
   @override
diff --git a/packages/flutter_localizations/lib/src/l10n/material_ar.arb b/packages/flutter_localizations/lib/src/l10n/material_ar.arb
index 91d7b7e..b032a49 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_ar.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_ar.arb
@@ -43,5 +43,11 @@
   "popupMenuLabel": "قائمة منبثقة",
   "dialogLabel": "مربع حوار",
   "alertDialogLabel": "مربع حوار التنبيه",
-  "searchFieldLabel": "بحث"
+  "searchFieldLabel": "بحث",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_bg.arb b/packages/flutter_localizations/lib/src/l10n/material_bg.arb
index 1f4b36d..d7b909a 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_bg.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_bg.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Изскачащо меню",
   "dialogLabel": "Диалогов прозорец",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_bs.arb b/packages/flutter_localizations/lib/src/l10n/material_bs.arb
index fcf1f25..d7a4b4a 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_bs.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_bs.arb
@@ -40,5 +40,11 @@
   "popupMenuLabel": "Skočni izbornik",
   "dialogLabel": "Dijalog",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
-}
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
+}
\ No newline at end of file
diff --git a/packages/flutter_localizations/lib/src/l10n/material_ca.arb b/packages/flutter_localizations/lib/src/l10n/material_ca.arb
index f9b02af..e4dbf5d 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_ca.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_ca.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Menú emergent",
   "dialogLabel": "Diàleg",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_cs.arb b/packages/flutter_localizations/lib/src/l10n/material_cs.arb
index 3a31cb0..53869e5 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_cs.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_cs.arb
@@ -41,5 +41,11 @@
   "popupMenuLabel": "Vyskakovací nabídka",
   "dialogLabel": "Dialogové okno",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_da.arb b/packages/flutter_localizations/lib/src/l10n/material_da.arb
index c63e24d..4b5deb8 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_da.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_da.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Pop op-menu",
   "dialogLabel": "Dialogboks",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_de.arb b/packages/flutter_localizations/lib/src/l10n/material_de.arb
index c78f0fe..d2e2c20 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_de.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_de.arb
@@ -40,5 +40,11 @@
   "popupMenuLabel": "Pop-up-Menü",
   "dialogLabel": "Dialogfeld",
   "alertDialogLabel": "Aufmerksam",
-  "searchFieldLabel": "Suchen"
+  "searchFieldLabel": "Suchen",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_de_CH.arb b/packages/flutter_localizations/lib/src/l10n/material_de_CH.arb
index d37a4ea..fd92a2a 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_de_CH.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_de_CH.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Pop-up-Menü",
   "dialogLabel": "Dialogfeld",
   "alertDialogLabel": "Aufmerksam",
-  "searchFieldLabel": "Suchen"
+  "searchFieldLabel": "Suchen",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_el.arb b/packages/flutter_localizations/lib/src/l10n/material_el.arb
index f9e3e95..df9cddd 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_el.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_el.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Αναδυόμενο μενού",
   "dialogLabel": "Παράθυρο διαλόγου",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_en.arb b/packages/flutter_localizations/lib/src/l10n/material_en.arb
index c58de4c..c13d508 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_en.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_en.arb
@@ -205,5 +205,35 @@
   "searchFieldLabel": "Search",
   "@searchFieldLabel": {
     "description": "Label indicating that a text field is a search field. This will be used as a hint text in the text field."
+  },
+
+  "reorderItemToStart": "Move to the start",
+  "@reorderItemToStart": {
+    "description": "The audio announcement to move an item in a Reorderable List to the start of the list."
+  },
+
+  "reorderItemToEnd": "Move to the end",
+  "@reorderItemToEnd": {
+    "description": "The audio announcement to move an item in a Reorderable List to the end of the list."
+  },
+
+  "reorderItemUp": "Move up",
+  "@reorderItemUp": {
+    "description": "The audio announcement to move an item in a Reorderable List up in the list when it is oriented vertically."
+  },
+
+  "reorderItemDown": "Move down",
+  "@reorderItemDown": {
+    "description": "The audio announcement to move an item in a Reorderable List down in the list when it is oriented vertically."
+  },
+
+  "reorderItemLeft": "Move left",
+  "@reorderItemLeft": {
+    "description": "The audio announcement to move an item in a Reorderable List left in the list when it is oriented horizontally."
+  },
+
+  "reorderItemRight": "Move right",
+  "@reorderItemRight": {
+    "description": "The audio announcement to move an item in a Reorderable List right in the list when it is oriented horizontally."
   }
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_en_AU.arb b/packages/flutter_localizations/lib/src/l10n/material_en_AU.arb
index 91a8cfb..9f7bceb 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_en_AU.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_en_AU.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Pop-up menu",
   "dialogLabel": "Dialogue",
   "alertDialogLabel": "Alert",
-  "searchFieldLabel": "Search"
+  "searchFieldLabel": "Search",
+  "reorderItemToStart": "Move to the start",
+  "reorderItemToEnd": "Move to the end",
+  "reorderItemUp": "Move up",
+  "reorderItemDown": "Move down",
+  "reorderItemLeft": "Move left",
+  "reorderItemRight": "Move right"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_en_CA.arb b/packages/flutter_localizations/lib/src/l10n/material_en_CA.arb
index 91a8cfb..9f7bceb 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_en_CA.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_en_CA.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Pop-up menu",
   "dialogLabel": "Dialogue",
   "alertDialogLabel": "Alert",
-  "searchFieldLabel": "Search"
+  "searchFieldLabel": "Search",
+  "reorderItemToStart": "Move to the start",
+  "reorderItemToEnd": "Move to the end",
+  "reorderItemUp": "Move up",
+  "reorderItemDown": "Move down",
+  "reorderItemLeft": "Move left",
+  "reorderItemRight": "Move right"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_en_GB.arb b/packages/flutter_localizations/lib/src/l10n/material_en_GB.arb
index ef47923..8bd72b6 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_en_GB.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_en_GB.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Pop-up menu",
   "dialogLabel": "Dialogue",
   "alertDialogLabel": "Alert",
-  "searchFieldLabel": "Search"
+  "searchFieldLabel": "Search",
+  "reorderItemToStart": "Move to the start",
+  "reorderItemToEnd": "Move to the end",
+  "reorderItemUp": "Move up",
+  "reorderItemDown": "Move down",
+  "reorderItemLeft": "Move left",
+  "reorderItemRight": "Move right"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_en_IE.arb b/packages/flutter_localizations/lib/src/l10n/material_en_IE.arb
index ef47923..8bd72b6 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_en_IE.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_en_IE.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Pop-up menu",
   "dialogLabel": "Dialogue",
   "alertDialogLabel": "Alert",
-  "searchFieldLabel": "Search"
+  "searchFieldLabel": "Search",
+  "reorderItemToStart": "Move to the start",
+  "reorderItemToEnd": "Move to the end",
+  "reorderItemUp": "Move up",
+  "reorderItemDown": "Move down",
+  "reorderItemLeft": "Move left",
+  "reorderItemRight": "Move right"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_en_IN.arb b/packages/flutter_localizations/lib/src/l10n/material_en_IN.arb
index 91a8cfb..9f7bceb 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_en_IN.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_en_IN.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Pop-up menu",
   "dialogLabel": "Dialogue",
   "alertDialogLabel": "Alert",
-  "searchFieldLabel": "Search"
+  "searchFieldLabel": "Search",
+  "reorderItemToStart": "Move to the start",
+  "reorderItemToEnd": "Move to the end",
+  "reorderItemUp": "Move up",
+  "reorderItemDown": "Move down",
+  "reorderItemLeft": "Move left",
+  "reorderItemRight": "Move right"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_en_SG.arb b/packages/flutter_localizations/lib/src/l10n/material_en_SG.arb
index 91a8cfb..9f7bceb 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_en_SG.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_en_SG.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Pop-up menu",
   "dialogLabel": "Dialogue",
   "alertDialogLabel": "Alert",
-  "searchFieldLabel": "Search"
+  "searchFieldLabel": "Search",
+  "reorderItemToStart": "Move to the start",
+  "reorderItemToEnd": "Move to the end",
+  "reorderItemUp": "Move up",
+  "reorderItemDown": "Move down",
+  "reorderItemLeft": "Move left",
+  "reorderItemRight": "Move right"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_en_ZA.arb b/packages/flutter_localizations/lib/src/l10n/material_en_ZA.arb
index ef47923..8bd72b6 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_en_ZA.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_en_ZA.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Pop-up menu",
   "dialogLabel": "Dialogue",
   "alertDialogLabel": "Alert",
-  "searchFieldLabel": "Search"
+  "searchFieldLabel": "Search",
+  "reorderItemToStart": "Move to the start",
+  "reorderItemToEnd": "Move to the end",
+  "reorderItemUp": "Move up",
+  "reorderItemDown": "Move down",
+  "reorderItemLeft": "Move left",
+  "reorderItemRight": "Move right"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_es.arb b/packages/flutter_localizations/lib/src/l10n/material_es.arb
index 8c37d29..2db29e9 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_es.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_es.arb
@@ -40,5 +40,11 @@
   "popupMenuLabel": "Menú emergente",
   "dialogLabel": "Cuadro de diálogo",
   "alertDialogLabel": "Alerta",
-  "searchFieldLabel": "Buscar"
+  "searchFieldLabel": "Buscar",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_es_419.arb b/packages/flutter_localizations/lib/src/l10n/material_es_419.arb
index 2aa58d1..5d2ea08 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_es_419.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_es_419.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Menú emergente",
   "dialogLabel": "Diálogo",
   "alertDialogLabel": "Alerta",
-  "searchFieldLabel": "Buscar"
+  "searchFieldLabel": "Buscar",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_es_AR.arb b/packages/flutter_localizations/lib/src/l10n/material_es_AR.arb
index 2aa58d1..5d2ea08 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_es_AR.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_es_AR.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Menú emergente",
   "dialogLabel": "Diálogo",
   "alertDialogLabel": "Alerta",
-  "searchFieldLabel": "Buscar"
+  "searchFieldLabel": "Buscar",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_et.arb b/packages/flutter_localizations/lib/src/l10n/material_et.arb
index df5def5..86f4ab8 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_et.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_et.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Hüpikmenüü",
   "dialogLabel": "Dialoog",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_fa.arb b/packages/flutter_localizations/lib/src/l10n/material_fa.arb
index 5b96f75..5090a91 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_fa.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_fa.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "منوی بازشو",
   "dialogLabel": "کادر گفتگو",
   "alertDialogLabel": "هشدار",
-  "searchFieldLabel": "جستجو کردن"
+  "searchFieldLabel": "جستجو کردن",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_fi.arb b/packages/flutter_localizations/lib/src/l10n/material_fi.arb
index eebc689..7ff7c1c 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_fi.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_fi.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Ponnahdusvalikko",
   "dialogLabel": "Valintaikkuna",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_fil.arb b/packages/flutter_localizations/lib/src/l10n/material_fil.arb
index 97aa8e8..57e60d6 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_fil.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_fil.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Popup na menu",
   "dialogLabel": "Dialog",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_fr.arb b/packages/flutter_localizations/lib/src/l10n/material_fr.arb
index a2850c3..37ab979 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_fr.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_fr.arb
@@ -40,5 +40,11 @@
   "popupMenuLabel": "Menu contextuel",
   "dialogLabel": "Boîte de dialogue",
   "alertDialogLabel": "Alerte",
-  "searchFieldLabel": "Chercher"
+  "searchFieldLabel": "Chercher",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_gsw.arb b/packages/flutter_localizations/lib/src/l10n/material_gsw.arb
index 3877707..1214cbe 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_gsw.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_gsw.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Pop-up-Menü",
   "dialogLabel": "Dialogfeld",
   "alertDialogLabel": "Aufmerksam",
-  "searchFieldLabel": "Suchen"
+  "searchFieldLabel": "Suchen",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_he.arb b/packages/flutter_localizations/lib/src/l10n/material_he.arb
index 324ca44..a90952a 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_he.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_he.arb
@@ -41,5 +41,11 @@
   "popupMenuLabel": "תפריט קופץ",
   "dialogLabel": "תיבת דו-שיח",
   "alertDialogLabel": "עֵרָנִי",
-  "searchFieldLabel": "לחפש"
+  "searchFieldLabel": "לחפש",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_hi.arb b/packages/flutter_localizations/lib/src/l10n/material_hi.arb
index 8dac983..2828fb7 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_hi.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_hi.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "पॉपअप मेन्यू",
   "dialogLabel": "संवाद",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_hr.arb b/packages/flutter_localizations/lib/src/l10n/material_hr.arb
index fcf1f25..1bc55d0 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_hr.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_hr.arb
@@ -40,5 +40,11 @@
   "popupMenuLabel": "Skočni izbornik",
   "dialogLabel": "Dijalog",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_hu.arb b/packages/flutter_localizations/lib/src/l10n/material_hu.arb
index bda2a7f..eb55a7e 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_hu.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_hu.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Előugró menü",
   "dialogLabel": "Párbeszédablak",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_id.arb b/packages/flutter_localizations/lib/src/l10n/material_id.arb
index b901554..109f06e 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_id.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_id.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Menu pop-up",
   "dialogLabel": "Dialog",
   "alertDialogLabel": "Waspada",
-  "searchFieldLabel": "Pencarian"
+  "searchFieldLabel": "Pencarian",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_it.arb b/packages/flutter_localizations/lib/src/l10n/material_it.arb
index 1277eec..7900b61 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_it.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_it.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Menu popup",
   "dialogLabel": "Finestra di dialogo",
   "alertDialogLabel": "Mettere in guardia",
-  "searchFieldLabel": "Ricerca"
+  "searchFieldLabel": "Ricerca",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_ja.arb b/packages/flutter_localizations/lib/src/l10n/material_ja.arb
index 2fa9a21..e96c200 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_ja.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_ja.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "ポップアップ メニュー",
   "dialogLabel": "ダイアログ",
   "alertDialogLabel": "アラート",
-  "searchFieldLabel": "サーチ"
+  "searchFieldLabel": "サーチ",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_ko.arb b/packages/flutter_localizations/lib/src/l10n/material_ko.arb
index b6b9eba..1cf75fb 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_ko.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_ko.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "팝업 메뉴",
   "dialogLabel": "대화상자",
   "alertDialogLabel": "경보",
-  "searchFieldLabel": "수색"
+  "searchFieldLabel": "수색",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_lt.arb b/packages/flutter_localizations/lib/src/l10n/material_lt.arb
index 0d544be..6510cf6 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_lt.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_lt.arb
@@ -41,5 +41,11 @@
   "popupMenuLabel": "Iššokantysis meniu",
   "dialogLabel": "Dialogo langas",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_lv.arb b/packages/flutter_localizations/lib/src/l10n/material_lv.arb
index 29278fb..fd78573 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_lv.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_lv.arb
@@ -40,5 +40,11 @@
   "popupMenuLabel": "Uznirstošā izvēlne",
   "dialogLabel": "Dialoglodziņš",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_ms.arb b/packages/flutter_localizations/lib/src/l10n/material_ms.arb
index 5e8fa12..074eab0 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_ms.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_ms.arb
@@ -40,5 +40,11 @@
   "popupMenuLabel": "Menu pop timbul",
   "dialogLabel": "Dialog",
   "alertDialogLabel": "Amaran",
-  "searchFieldLabel": "Carian"
+  "searchFieldLabel": "Carian",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_nb.arb b/packages/flutter_localizations/lib/src/l10n/material_nb.arb
index 4aec3db..098b466 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_nb.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_nb.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Forgrunnsmeny",
   "dialogLabel": "Dialogboks",
   "alertDialogLabel": "Varsling",
-  "searchFieldLabel": "Søke"
+  "searchFieldLabel": "Søke",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_nl.arb b/packages/flutter_localizations/lib/src/l10n/material_nl.arb
index a7ba079..f14f62a 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_nl.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_nl.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Pop-upmenu",
   "dialogLabel": "Dialoogvenster",
   "alertDialogLabel": "Alarm",
-  "searchFieldLabel": "Zoeken"
+  "searchFieldLabel": "Zoeken",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_pl.arb b/packages/flutter_localizations/lib/src/l10n/material_pl.arb
index 72e73da..0e0a749 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_pl.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_pl.arb
@@ -41,5 +41,11 @@
   "popupMenuLabel": "Wyskakujące menu",
   "dialogLabel": "Okno dialogowe",
   "alertDialogLabel": "Alarm",
-  "searchFieldLabel": "Szukaj"
+  "searchFieldLabel": "Szukaj",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_ps.arb b/packages/flutter_localizations/lib/src/l10n/material_ps.arb
index a1eb9da..eb23df9 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_ps.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_ps.arb
@@ -38,5 +38,11 @@
   "popupMenuLabel": "د پاپ اپ مینو",
   "dialogLabel": "خبرې اترې",
   "alertDialogLabel": "خبرتیا",
-  "searchFieldLabel": "لټون"
+  "searchFieldLabel": "لټون",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_pt.arb b/packages/flutter_localizations/lib/src/l10n/material_pt.arb
index 216e79f..39d16b6 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_pt.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_pt.arb
@@ -41,5 +41,11 @@
   "popupMenuLabel": "Menu pop-up",
   "dialogLabel": "Caixa de diálogo",
   "alertDialogLabel": "Alerta",
-  "searchFieldLabel": "Pesquisa"
+  "searchFieldLabel": "Pesquisa",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_pt_PT.arb b/packages/flutter_localizations/lib/src/l10n/material_pt_PT.arb
index 7f0eff7..f0f4d37 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_pt_PT.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_pt_PT.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Menu pop-up",
   "dialogLabel": "Caixa de diálogo",
   "alertDialogLabel": "Alerta",
-  "searchFieldLabel": "Pesquisa"
+  "searchFieldLabel": "Pesquisa",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_ro.arb b/packages/flutter_localizations/lib/src/l10n/material_ro.arb
index ca88afc..c74f394 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_ro.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_ro.arb
@@ -41,5 +41,11 @@
   "popupMenuLabel": "Meniu pop-up",
   "dialogLabel": "Casetă de dialog",
   "alertDialogLabel": "Alerta",
-  "searchFieldLabel": "Căutare"
+  "searchFieldLabel": "Căutare",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_ru.arb b/packages/flutter_localizations/lib/src/l10n/material_ru.arb
index a9e0fda..bb52356 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_ru.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_ru.arb
@@ -42,5 +42,11 @@
   "popupMenuLabel": "Всплывающее меню",
   "dialogLabel": "Диалоговое окно",
   "alertDialogLabel": "бдительный",
-  "searchFieldLabel": "Поиск"
+  "searchFieldLabel": "Поиск",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_sk.arb b/packages/flutter_localizations/lib/src/l10n/material_sk.arb
index 0ffe52a..be790e4 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_sk.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_sk.arb
@@ -41,5 +41,11 @@
   "popupMenuLabel": "Kontextová ponuka",
   "dialogLabel": "Dialógové okno",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_sl.arb b/packages/flutter_localizations/lib/src/l10n/material_sl.arb
index 44a9b81..ef862c7 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_sl.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_sl.arb
@@ -41,5 +41,11 @@
   "popupMenuLabel": "Pojavni meni",
   "dialogLabel": "Pogovorno okno",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_sr.arb b/packages/flutter_localizations/lib/src/l10n/material_sr.arb
index c7d328e..9d98984 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_sr.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_sr.arb
@@ -40,5 +40,11 @@
   "popupMenuLabel": "Искачући мени",
   "dialogLabel": "Дијалог",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_sr_Latn.arb b/packages/flutter_localizations/lib/src/l10n/material_sr_Latn.arb
index a90e601..f9fc84f 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_sr_Latn.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_sr_Latn.arb
@@ -40,5 +40,11 @@
   "popupMenuLabel": "Iskačući meni",
   "dialogLabel": "Dijalog",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_sv.arb b/packages/flutter_localizations/lib/src/l10n/material_sv.arb
index ddd9a5d..b03c357 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_sv.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_sv.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Popup-meny",
   "dialogLabel": "Dialogruta",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_th.arb b/packages/flutter_localizations/lib/src/l10n/material_th.arb
index 507f4a9..08aa74d 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_th.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_th.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "เมนูป๊อปอัป",
   "dialogLabel": "กล่องโต้ตอบ",
   "alertDialogLabel": "เตือนภัย",
-  "searchFieldLabel": "ค้นหา"
+  "searchFieldLabel": "ค้นหา",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_tl.arb b/packages/flutter_localizations/lib/src/l10n/material_tl.arb
index 97aa8e8..57e60d6 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_tl.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_tl.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Popup na menu",
   "dialogLabel": "Dialog",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_tr.arb b/packages/flutter_localizations/lib/src/l10n/material_tr.arb
index 1300576..f784e5a 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_tr.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_tr.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Popup menü",
   "dialogLabel": "İletişim kutusu",
   "alertDialogLabel": "Alarm",
-  "searchFieldLabel": "Arama"
+  "searchFieldLabel": "Arama",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_uk.arb b/packages/flutter_localizations/lib/src/l10n/material_uk.arb
index 1395341..18673db 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_uk.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_uk.arb
@@ -41,5 +41,11 @@
   "popupMenuLabel": "Спливаюче меню",
   "dialogLabel": "Вікно",
   "alertDialogLabel": "TBD",
-  "searchFieldLabel": "TBD"
+  "searchFieldLabel": "TBD",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_ur.arb b/packages/flutter_localizations/lib/src/l10n/material_ur.arb
index 7daa58a..895752e 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_ur.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_ur.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "پاپ اپ مینو",
   "dialogLabel": "ڈائلاگ",
   "alertDialogLabel": "انتباہ",
-  "searchFieldLabel": "تلاش کریں"
+  "searchFieldLabel": "تلاش کریں",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_vi.arb b/packages/flutter_localizations/lib/src/l10n/material_vi.arb
index 8b57805..bb2e88a 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_vi.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_vi.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "Menu bật lên",
   "dialogLabel": "Hộp thoại",
   "alertDialogLabel": "Hộp thoại",
-  "searchFieldLabel": "Tìm kiếm"
+  "searchFieldLabel": "Tìm kiếm",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_zh.arb b/packages/flutter_localizations/lib/src/l10n/material_zh.arb
index 6536d2f..a3b9641 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_zh.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_zh.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "弹出菜单",
   "dialogLabel": "对话框",
   "alertDialogLabel": "警报",
-  "searchFieldLabel": "搜索"
+  "searchFieldLabel": "搜索",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_zh_HK.arb b/packages/flutter_localizations/lib/src/l10n/material_zh_HK.arb
index c54eaa7..598d951 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_zh_HK.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_zh_HK.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "彈出式選單",
   "dialogLabel": "對話方塊",
   "alertDialogLabel": "警报",
-  "searchFieldLabel": "搜索"
+  "searchFieldLabel": "搜索",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }
diff --git a/packages/flutter_localizations/lib/src/l10n/material_zh_TW.arb b/packages/flutter_localizations/lib/src/l10n/material_zh_TW.arb
index c54eaa7..598d951 100644
--- a/packages/flutter_localizations/lib/src/l10n/material_zh_TW.arb
+++ b/packages/flutter_localizations/lib/src/l10n/material_zh_TW.arb
@@ -39,5 +39,11 @@
   "popupMenuLabel": "彈出式選單",
   "dialogLabel": "對話方塊",
   "alertDialogLabel": "警报",
-  "searchFieldLabel": "搜索"
+  "searchFieldLabel": "搜索",
+  "reorderItemToStart": "TBD",
+  "reorderItemToEnd": "TBD",
+  "reorderItemUp": "TBD",
+  "reorderItemDown": "TBD",
+  "reorderItemLeft": "TBD",
+  "reorderItemRight": "TBD"
 }