You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
diplomatic-quarter/lib/pages/conference/widgets/platform_alert_dialog.dart

99 lines
2.3 KiB
Dart

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import './platform_widget.dart';
class PlatformAlertDialog extends PlatformWidget {
PlatformAlertDialog({@required this.title, @required this.content, @required this.defaultActionText, this.cancelActionText})
: assert(title != null),
assert(content != null),
assert(defaultActionText != null);
final String title;
final String content;
final String defaultActionText;
final String cancelActionText;
Future<bool> show(BuildContext context) async {
return Platform.isIOS
? await showCupertinoDialog<bool>(
context: context,
builder: (BuildContext context) => this,
)
: await showDialog<bool>(
context: context,
barrierDismissible: false,
builder: (BuildContext context) => this,
);
}
@override
Widget buildCupertinoWidget(BuildContext context) {
return CupertinoAlertDialog(
title: Text(title),
content: Text(content),
actions: _buildActions(context),
);
}
@override
Widget buildMaterialWidget(BuildContext context) {
return AlertDialog(
title: Text(title),
content: Text(content),
actions: _buildActions(context),
);
}
List<Widget> _buildActions(BuildContext context) {
final actions = <Widget>[];
if (cancelActionText != null) {
actions.add(
PlatformAlertDialogAction(
child: Text(cancelActionText),
onPressed: () {
Navigator.of(context).pop(false);
},
),
);
}
actions.add(
PlatformAlertDialogAction(
child: Text(defaultActionText),
onPressed: () {
Navigator.of(context).pop(true);
},
),
);
return actions;
}
}
class PlatformAlertDialogAction extends PlatformWidget {
PlatformAlertDialogAction({
this.child,
this.onPressed,
});
final Widget child;
final VoidCallback onPressed;
@override
Widget buildCupertinoWidget(BuildContext context) {
return CupertinoDialogAction(
child: child,
onPressed: onPressed,
);
}
@override
Widget buildMaterialWidget(BuildContext context) {
return FlatButton(
child: child,
onPressed: onPressed,
);
}
}