// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class CupertinoDialogDemo extends StatefulWidget { static const String routeName = '/cupertino/dialog'; @override _CupertinoDialogDemoState createState() => new _CupertinoDialogDemoState(); } class _CupertinoDialogDemoState extends State<CupertinoDialogDemo> { final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>(); void showDemoDialog<T>({BuildContext context, Widget child}) { showDialog<T>( context: context, barrierDismissible: false, builder: (BuildContext context) => child, ).then<void>((T value) { // The value passed to Navigator.pop() or null. 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'), ), body: new ListView( padding: const EdgeInsets.symmetric(vertical: 24.0, horizontal: 72.0), children: <Widget>[ new CupertinoButton( child: const Text('Alert'), color: CupertinoColors.activeBlue, onPressed: () { showDemoDialog<String>( context: context, child: new CupertinoAlertDialog( title: const Text('Discard draft?'), actions: <Widget>[ new CupertinoDialogAction( child: const Text('Discard'), isDestructiveAction: true, onPressed: () { Navigator.pop(context, 'Discard'); }, ), new CupertinoDialogAction( child: const Text('Cancel'), isDefaultAction: true, onPressed: () { Navigator.pop(context, 'Cancel'); }, ), ], ), ); }, ), const Padding(padding: const EdgeInsets.all(8.0)), new CupertinoButton( child: const Text('Alert with Title'), color: CupertinoColors.activeBlue, padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 36.0), onPressed: () { showDemoDialog<String>( context: context, child: new CupertinoAlertDialog( title: const Text('Allow "Maps" to access your location while you are using the app?'), content: const Text('Your current location will be displayed on the map and used ' 'for directions, nearby search results, and estimated travel times.'), actions: <Widget>[ new CupertinoDialogAction( child: const Text('Don\'t Allow'), onPressed: () { Navigator.pop(context, 'Disallow'); }, ), new CupertinoDialogAction( child: const Text('Allow'), onPressed: () { Navigator.pop(context, 'Allow'); }, ), ], ), ); }, ), const Padding(padding: const EdgeInsets.all(8.0)), new CupertinoButton( child: const Text('Alert with Buttons'), color: CupertinoColors.activeBlue, padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 36.0), onPressed: () { showDemoDialog<String>( context: context, child: const CupertinoDessertDialog( title: const Text('Select Favorite Dessert'), content: const Text('Please select your favorite type of dessert from the ' 'list below. Your selection will be used to customize the suggested ' 'list of eateries in your area.'), ), ); }, ), const Padding(padding: const EdgeInsets.all(8.0)), new CupertinoButton( child: const Text('Alert Buttons Only'), color: CupertinoColors.activeBlue, padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 36.0), onPressed: () { showDemoDialog<String>( context: context, child: const CupertinoDessertDialog(), ); }, ), ], ), ); } } class CupertinoDessertDialog extends StatelessWidget { const CupertinoDessertDialog({Key key, this.title, this.content}) : super(key: key); final Widget title; final Widget content; @override Widget build(BuildContext context) { return new CupertinoAlertDialog( title: title, content: content, actions: <Widget>[ new CupertinoDialogAction( child: const Text('Cheesecake'), onPressed: () { Navigator.pop(context, 'Cheesecake'); }, ), new CupertinoDialogAction( child: const Text('Tiramisu'), onPressed: () { Navigator.pop(context, 'Tiramisu'); }, ), new CupertinoDialogAction( child: const Text('Apple Pie'), onPressed: () { Navigator.pop(context, 'Apple Pie'); }, ), new CupertinoDialogAction( child: const Text("Devil's food cake"), onPressed: () { Navigator.pop(context, "Devil's food cake"); }, ), new CupertinoDialogAction( child: const Text('Banana Split'), onPressed: () { Navigator.pop(context, 'Banana Split'); }, ), new CupertinoDialogAction( child: const Text('Oatmeal Cookie'), onPressed: () { Navigator.pop(context, 'Oatmeal Cookies'); }, ), new CupertinoDialogAction( child: const Text('Chocolate Brownie'), onPressed: () { Navigator.pop(context, 'Chocolate Brownies'); }, ), new CupertinoDialogAction( child: const Text('Cancel'), isDestructiveAction: true, onPressed: () { Navigator.pop(context, 'Cancel'); }, ), ], ); } }