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.
99 lines
2.3 KiB
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,
|
|
);
|
|
}
|
|
}
|