mirror of
https://github.com/flutter/samples.git
synced 2025-11-12 07:48:55 +00:00
[Gallery] Fix directory structure (#312)
This commit is contained in:
342
gallery/lib/demos/cupertino/cupertino_alert_demo.dart
Normal file
342
gallery/lib/demos/cupertino/cupertino_alert_demo.dart
Normal file
@@ -0,0 +1,342 @@
|
||||
// Copyright 2019 The Flutter team. 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:gallery/data/gallery_options.dart';
|
||||
import 'package:gallery/l10n/gallery_localizations.dart';
|
||||
|
||||
// BEGIN cupertinoAlertDemo
|
||||
|
||||
enum AlertDemoType {
|
||||
alert,
|
||||
alertTitle,
|
||||
alertButtons,
|
||||
alertButtonsOnly,
|
||||
actionSheet,
|
||||
}
|
||||
|
||||
class CupertinoAlertDemo extends StatefulWidget {
|
||||
const CupertinoAlertDemo({
|
||||
Key key,
|
||||
@required this.type,
|
||||
}) : super(key: key);
|
||||
|
||||
final AlertDemoType type;
|
||||
|
||||
@override
|
||||
_CupertinoAlertDemoState createState() => _CupertinoAlertDemoState();
|
||||
}
|
||||
|
||||
class _CupertinoAlertDemoState extends State<CupertinoAlertDemo> {
|
||||
String lastSelectedValue;
|
||||
|
||||
String _title(BuildContext context) {
|
||||
switch (widget.type) {
|
||||
case AlertDemoType.alert:
|
||||
return GalleryLocalizations.of(context).demoCupertinoAlertTitle;
|
||||
case AlertDemoType.alertTitle:
|
||||
return GalleryLocalizations.of(context)
|
||||
.demoCupertinoAlertWithTitleTitle;
|
||||
case AlertDemoType.alertButtons:
|
||||
return GalleryLocalizations.of(context).demoCupertinoAlertButtonsTitle;
|
||||
case AlertDemoType.alertButtonsOnly:
|
||||
return GalleryLocalizations.of(context)
|
||||
.demoCupertinoAlertButtonsOnlyTitle;
|
||||
case AlertDemoType.actionSheet:
|
||||
return GalleryLocalizations.of(context).demoCupertinoActionSheetTitle;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
void _showDemoDialog({BuildContext context, Widget child}) {
|
||||
showCupertinoDialog<String>(
|
||||
context: context,
|
||||
builder: (context) => ApplyTextOptions(child: child),
|
||||
).then((value) {
|
||||
if (value != null) {
|
||||
setState(() {
|
||||
lastSelectedValue = value;
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void _showDemoActionSheet({BuildContext context, Widget child}) {
|
||||
child = ApplyTextOptions(
|
||||
child: CupertinoTheme(
|
||||
data: CupertinoTheme.of(context),
|
||||
child: child,
|
||||
),
|
||||
);
|
||||
showCupertinoModalPopup<String>(
|
||||
context: context,
|
||||
builder: (context) => child,
|
||||
).then((value) {
|
||||
if (value != null) {
|
||||
setState(() {
|
||||
lastSelectedValue = value;
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void _onAlertPress(BuildContext context) {
|
||||
_showDemoDialog(
|
||||
context: context,
|
||||
child: CupertinoAlertDialog(
|
||||
title: Text(GalleryLocalizations.of(context).dialogDiscardTitle),
|
||||
actions: [
|
||||
CupertinoDialogAction(
|
||||
child: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertDiscard,
|
||||
),
|
||||
isDestructiveAction: true,
|
||||
onPressed: () => Navigator.of(context, rootNavigator: true).pop(
|
||||
GalleryLocalizations.of(context).cupertinoAlertDiscard,
|
||||
),
|
||||
),
|
||||
CupertinoDialogAction(
|
||||
child: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertCancel,
|
||||
),
|
||||
isDefaultAction: true,
|
||||
onPressed: () => Navigator.of(context, rootNavigator: true).pop(
|
||||
GalleryLocalizations.of(context).cupertinoAlertCancel,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void _onAlertWithTitlePress(BuildContext context) {
|
||||
_showDemoDialog(
|
||||
context: context,
|
||||
child: CupertinoAlertDialog(
|
||||
title: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertLocationTitle,
|
||||
),
|
||||
content: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertLocationDescription,
|
||||
),
|
||||
actions: [
|
||||
CupertinoDialogAction(
|
||||
child: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertDontAllow,
|
||||
),
|
||||
onPressed: () => Navigator.of(context, rootNavigator: true).pop(
|
||||
GalleryLocalizations.of(context).cupertinoAlertDontAllow,
|
||||
),
|
||||
),
|
||||
CupertinoDialogAction(
|
||||
child: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertAllow,
|
||||
),
|
||||
onPressed: () => Navigator.of(context, rootNavigator: true).pop(
|
||||
GalleryLocalizations.of(context).cupertinoAlertAllow,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void _onAlertWithButtonsPress(BuildContext context) {
|
||||
_showDemoDialog(
|
||||
context: context,
|
||||
child: CupertinoDessertDialog(
|
||||
title: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertFavoriteDessert,
|
||||
),
|
||||
content: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertDessertDescription,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void _onAlertButtonsOnlyPress(BuildContext context) {
|
||||
_showDemoDialog(
|
||||
context: context,
|
||||
child: const CupertinoDessertDialog(),
|
||||
);
|
||||
}
|
||||
|
||||
void _onActionSheetPress(BuildContext context) {
|
||||
_showDemoActionSheet(
|
||||
context: context,
|
||||
child: CupertinoActionSheet(
|
||||
title: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertFavoriteDessert,
|
||||
),
|
||||
message: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertDessertDescription,
|
||||
),
|
||||
actions: [
|
||||
CupertinoActionSheetAction(
|
||||
child: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertCheesecake,
|
||||
),
|
||||
onPressed: () => Navigator.of(context, rootNavigator: true).pop(
|
||||
GalleryLocalizations.of(context).cupertinoAlertCheesecake,
|
||||
),
|
||||
),
|
||||
CupertinoActionSheetAction(
|
||||
child: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertTiramisu,
|
||||
),
|
||||
onPressed: () => Navigator.of(context, rootNavigator: true).pop(
|
||||
GalleryLocalizations.of(context).cupertinoAlertTiramisu,
|
||||
),
|
||||
),
|
||||
CupertinoActionSheetAction(
|
||||
child: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertApplePie,
|
||||
),
|
||||
onPressed: () => Navigator.of(context, rootNavigator: true).pop(
|
||||
GalleryLocalizations.of(context).cupertinoAlertApplePie,
|
||||
),
|
||||
),
|
||||
],
|
||||
cancelButton: CupertinoActionSheetAction(
|
||||
child: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertCancel,
|
||||
),
|
||||
isDefaultAction: true,
|
||||
onPressed: () => Navigator.of(context, rootNavigator: true).pop(
|
||||
GalleryLocalizations.of(context).cupertinoAlertCancel,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: CupertinoNavigationBar(
|
||||
automaticallyImplyLeading: false,
|
||||
middle: Text(_title(context)),
|
||||
),
|
||||
child: Builder(
|
||||
builder: (context) {
|
||||
return Column(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Center(
|
||||
child: CupertinoButton.filled(
|
||||
child: Text(
|
||||
GalleryLocalizations.of(context).cupertinoShowAlert,
|
||||
),
|
||||
onPressed: () {
|
||||
switch (widget.type) {
|
||||
case AlertDemoType.alert:
|
||||
_onAlertPress(context);
|
||||
break;
|
||||
case AlertDemoType.alertTitle:
|
||||
_onAlertWithTitlePress(context);
|
||||
break;
|
||||
case AlertDemoType.alertButtons:
|
||||
_onAlertWithButtonsPress(context);
|
||||
break;
|
||||
case AlertDemoType.alertButtonsOnly:
|
||||
_onAlertButtonsOnlyPress(context);
|
||||
break;
|
||||
case AlertDemoType.actionSheet:
|
||||
_onActionSheetPress(context);
|
||||
break;
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
if (lastSelectedValue != null)
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(16),
|
||||
child: Text(
|
||||
GalleryLocalizations.of(context)
|
||||
.dialogSelectedOption(lastSelectedValue),
|
||||
style: CupertinoTheme.of(context).textTheme.textStyle,
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
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 CupertinoAlertDialog(
|
||||
title: title,
|
||||
content: content,
|
||||
actions: [
|
||||
CupertinoDialogAction(
|
||||
child: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertCheesecake,
|
||||
),
|
||||
onPressed: () {
|
||||
Navigator.of(context, rootNavigator: true).pop(
|
||||
GalleryLocalizations.of(context).cupertinoAlertCheesecake,
|
||||
);
|
||||
},
|
||||
),
|
||||
CupertinoDialogAction(
|
||||
child: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertTiramisu,
|
||||
),
|
||||
onPressed: () {
|
||||
Navigator.of(context, rootNavigator: true).pop(
|
||||
GalleryLocalizations.of(context).cupertinoAlertTiramisu,
|
||||
);
|
||||
},
|
||||
),
|
||||
CupertinoDialogAction(
|
||||
child: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertApplePie,
|
||||
),
|
||||
onPressed: () {
|
||||
Navigator.of(context, rootNavigator: true).pop(
|
||||
GalleryLocalizations.of(context).cupertinoAlertApplePie,
|
||||
);
|
||||
},
|
||||
),
|
||||
CupertinoDialogAction(
|
||||
child: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertChocolateBrownie,
|
||||
),
|
||||
onPressed: () {
|
||||
Navigator.of(context, rootNavigator: true).pop(
|
||||
GalleryLocalizations.of(context).cupertinoAlertChocolateBrownie,
|
||||
);
|
||||
},
|
||||
),
|
||||
CupertinoDialogAction(
|
||||
child: Text(
|
||||
GalleryLocalizations.of(context).cupertinoAlertCancel,
|
||||
),
|
||||
isDestructiveAction: true,
|
||||
onPressed: () {
|
||||
Navigator.of(context, rootNavigator: true).pop(
|
||||
GalleryLocalizations.of(context).cupertinoAlertCancel,
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// END
|
||||
Reference in New Issue
Block a user