Add CupertinoActionSheet to gallery (#20411)


diff --git a/examples/flutter_gallery/lib/demo/cupertino/cupertino.dart b/examples/flutter_gallery/lib/demo/cupertino/cupertino.dart
index 641c168..2b7e62c 100644
--- a/examples/flutter_gallery/lib/demo/cupertino/cupertino.dart
+++ b/examples/flutter_gallery/lib/demo/cupertino/cupertino.dart
@@ -3,8 +3,8 @@
 // found in the LICENSE file.
 
 export 'cupertino_activity_indicator_demo.dart';
+export 'cupertino_alert_demo.dart';
 export 'cupertino_buttons_demo.dart';
-export 'cupertino_dialog_demo.dart';
 export 'cupertino_navigation_demo.dart';
 export 'cupertino_picker_demo.dart';
 export 'cupertino_refresh_demo.dart';
diff --git a/examples/flutter_gallery/lib/demo/cupertino/cupertino_dialog_demo.dart b/examples/flutter_gallery/lib/demo/cupertino/cupertino_alert_demo.dart
similarity index 72%
rename from examples/flutter_gallery/lib/demo/cupertino/cupertino_dialog_demo.dart
rename to examples/flutter_gallery/lib/demo/cupertino/cupertino_alert_demo.dart
index b600100..eca06c3 100644
--- a/examples/flutter_gallery/lib/demo/cupertino/cupertino_dialog_demo.dart
+++ b/examples/flutter_gallery/lib/demo/cupertino/cupertino_alert_demo.dart
@@ -5,14 +5,14 @@
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 
-class CupertinoDialogDemo extends StatefulWidget {
-  static const String routeName = '/cupertino/dialog';
+class CupertinoAlertDemo extends StatefulWidget {
+  static const String routeName = '/cupertino/alert';
 
   @override
-  _CupertinoDialogDemoState createState() => new _CupertinoDialogDemoState();
+  _CupertinoAlertDemoState createState() => new _CupertinoAlertDemoState();
 }
 
-class _CupertinoDialogDemoState extends State<CupertinoDialogDemo> {
+class _CupertinoAlertDemoState extends State<CupertinoAlertDemo> {
   final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
 
   void showDemoDialog<T>({BuildContext context, Widget child}) {
@@ -32,12 +32,27 @@
     });
   }
 
+  void showDemoActionSheet<T>({BuildContext context, Widget child}) {
+    showCupertinoModalPopup<T>(
+      context: context,
+      builder: (BuildContext context) => child,
+    ).then<void>((T value) {
+      if (value != null) {
+        _scaffoldKey.currentState.showSnackBar(
+          new SnackBar(
+            content: new Text('You selected: $value'),
+          ),
+        );
+      }
+    });
+  }
+
   @override
   Widget build(BuildContext context) {
     return new Scaffold(
       key: _scaffoldKey,
       appBar: new AppBar(
-        title: const Text('Cupertino Dialogs'),
+        title: const Text('Cupertino Alerts'),
       ),
       body: new ListView(
         padding: const EdgeInsets.symmetric(vertical: 24.0, horizontal: 72.0),
@@ -129,6 +144,48 @@
               );
             },
           ),
+          const Padding(padding: EdgeInsets.all(8.0)),
+          new CupertinoButton(
+            child: const Text('Action Sheet'),
+            color: CupertinoColors.activeBlue,
+            padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 36.0),
+            onPressed: () {
+              showDemoActionSheet<String>(
+                context: context,
+                child: new CupertinoActionSheet(
+                  title: const Text('Favorite Dessert'),
+                  message: const Text('Please select the best dessert from the options below.'),
+                  actions: <Widget>[
+                    new CupertinoActionSheetAction(
+                      child: const Text('Profiteroles'),
+                      onPressed: () {
+                        Navigator.pop(context, 'Profiteroles');
+                      },
+                    ),
+                    new CupertinoActionSheetAction(
+                      child: const Text('Cannolis'),
+                      onPressed: () {
+                        Navigator.pop(context, 'Cannolis');
+                      },
+                    ),
+                    new CupertinoActionSheetAction(
+                      child: const Text('Trifle'),
+                      onPressed: () {
+                        Navigator.pop(context, 'Trifle');
+                      },
+                    ),
+                  ],
+                  cancelButton: new CupertinoActionSheetAction(
+                    child: const Text('Cancel'),
+                    isDefaultAction: true,
+                    onPressed: () {
+                      Navigator.pop(context, 'Cancel');
+                    },
+                  )
+                ),
+              );
+            },
+          ),
         ],
       ),
     );
diff --git a/examples/flutter_gallery/lib/gallery/demos.dart b/examples/flutter_gallery/lib/gallery/demos.dart
index f71545d..3aa5410 100644
--- a/examples/flutter_gallery/lib/gallery/demos.dart
+++ b/examples/flutter_gallery/lib/gallery/demos.dart
@@ -402,11 +402,11 @@
       buildRoute: (BuildContext context) => new CupertinoButtonsDemo(),
     ),
     new GalleryDemo(
-      title: 'Dialogs',
+      title: 'Alerts',
       icon: GalleryIcons.dialogs,
       category: _kCupertinoComponents,
-      routeName: CupertinoDialogDemo.routeName,
-      buildRoute: (BuildContext context) => new CupertinoDialogDemo(),
+      routeName: CupertinoAlertDemo.routeName,
+      buildRoute: (BuildContext context) => new CupertinoAlertDemo(),
     ),
     new GalleryDemo(
       title: 'Navigation',