Skip to content

Commit a210120

Browse files
committed
use alertDialog.adaptive and _adaptiveWidget to user Cupertino flavour for ios
1 parent 26c2aa0 commit a210120

File tree

1 file changed

+33
-5
lines changed

1 file changed

+33
-5
lines changed

lib/widgets/dialog.dart

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_gen/gen_l10n/zulip_localizations.dart';
3+
import 'package:flutter/cupertino.dart';
34

45
Widget _dialogActionText(String text) {
56
return Text(
@@ -15,6 +16,30 @@ Widget _dialogActionText(String text) {
1516
);
1617
}
1718

19+
// Sets the dialog action to be platform appropriate
20+
// by displaying a [CupertinoDialogAction] for IOS platforms
21+
// and a regular [TextButton] otherwise.
22+
Widget _adaptiveAction(
23+
{required BuildContext context,
24+
required VoidCallback onPressed,
25+
required Widget child}) {
26+
final ThemeData theme = Theme.of(context);
27+
switch (theme.platform) {
28+
case TargetPlatform.android:
29+
return TextButton(onPressed: onPressed, child: child);
30+
case TargetPlatform.fuchsia:
31+
return TextButton(onPressed: onPressed, child: child);
32+
case TargetPlatform.linux:
33+
return TextButton(onPressed: onPressed, child: child);
34+
case TargetPlatform.windows:
35+
return TextButton(onPressed: onPressed, child: child);
36+
case TargetPlatform.iOS:
37+
return CupertinoDialogAction(onPressed: onPressed, child: child);
38+
case TargetPlatform.macOS:
39+
return CupertinoDialogAction(onPressed: onPressed, child: child);
40+
}
41+
}
42+
1843
/// Tracks the status of a dialog, in being still open or already closed.
1944
///
2045
/// See also:
@@ -42,11 +67,12 @@ DialogStatus showErrorDialog({
4267
final zulipLocalizations = ZulipLocalizations.of(context);
4368
final future = showDialog<void>(
4469
context: context,
45-
builder: (BuildContext context) => AlertDialog(
70+
builder: (BuildContext context) => AlertDialog.adaptive(
4671
title: Text(title),
4772
content: message != null ? SingleChildScrollView(child: Text(message)) : null,
4873
actions: [
49-
TextButton(
74+
_adaptiveAction(
75+
context: context,
5076
onPressed: () => Navigator.pop(context),
5177
child: _dialogActionText(zulipLocalizations.errorDialogContinue)),
5278
]));
@@ -63,14 +89,16 @@ void showSuggestedActionDialog({
6389
final zulipLocalizations = ZulipLocalizations.of(context);
6490
showDialog<void>(
6591
context: context,
66-
builder: (BuildContext context) => AlertDialog(
92+
builder: (BuildContext context) => AlertDialog.adaptive(
6793
title: Text(title),
6894
content: SingleChildScrollView(child: Text(message)),
6995
actions: [
70-
TextButton(
96+
_adaptiveAction(
97+
context: context,
7198
onPressed: () => Navigator.pop(context),
7299
child: _dialogActionText(zulipLocalizations.dialogCancel)),
73-
TextButton(
100+
_adaptiveAction(
101+
context: context,
74102
onPressed: onActionButtonPress,
75103
child: _dialogActionText(actionButtonText ?? zulipLocalizations.dialogContinue)),
76104
]));

0 commit comments

Comments
 (0)