@@ -10,7 +10,15 @@ import 'content.dart';
1010import 'store.dart' ;
1111
1212/// A platform-appropriate action for [AlertDialog.adaptive] 's [actions] param.
13- Widget _adaptiveAction ({required VoidCallback onPressed, required String text}) {
13+ ///
14+ /// [isDefaultAction] and [isDestructiveAction] are ignored on Android
15+ /// because Material Design doesn't specify corresponding styles.
16+ Widget _adaptiveAction ({
17+ required VoidCallback onPressed,
18+ required bool isDefaultAction,
19+ bool isDestructiveAction = false ,
20+ required String text,
21+ }) {
1422 switch (defaultTargetPlatform) {
1523 case TargetPlatform .android:
1624 case TargetPlatform .fuchsia:
@@ -30,7 +38,11 @@ Widget _adaptiveAction({required VoidCallback onPressed, required String text})
3038
3139 case TargetPlatform .iOS:
3240 case TargetPlatform .macOS:
33- return CupertinoDialogAction (onPressed: onPressed, child: Text (text));
41+ return CupertinoDialogAction (
42+ onPressed: onPressed,
43+ isDefaultAction: isDefaultAction,
44+ isDestructiveAction: isDestructiveAction,
45+ child: Text (text));
3446 }
3547}
3648
@@ -112,9 +124,11 @@ DialogStatus<void> showErrorDialog({
112124 if (learnMoreButtonUrl != null )
113125 _adaptiveAction (
114126 onPressed: () => PlatformActions .launchUrl (context, learnMoreButtonUrl),
127+ isDefaultAction: false ,
115128 text: zulipLocalizations.errorDialogLearnMore),
116129 _adaptiveAction (
117130 onPressed: () => Navigator .pop (context),
131+ isDefaultAction: true ,
118132 text: zulipLocalizations.errorDialogContinue),
119133 ]));
120134 return DialogStatus (future);
@@ -133,6 +147,7 @@ DialogStatus<bool> showSuggestedActionDialog({
133147 required String title,
134148 required String message,
135149 required String ? actionButtonText,
150+ bool destructiveActionButton = false ,
136151}) {
137152 final zulipLocalizations = ZulipLocalizations .of (context);
138153 final future = showDialog <bool >(
@@ -143,9 +158,12 @@ DialogStatus<bool> showSuggestedActionDialog({
143158 actions: [
144159 _adaptiveAction (
145160 onPressed: () => Navigator .pop <bool >(context, null ),
161+ isDefaultAction: false ,
146162 text: zulipLocalizations.dialogCancel),
147163 _adaptiveAction (
148164 onPressed: () => Navigator .pop <bool >(context, true ),
165+ isDefaultAction: true ,
166+ isDestructiveAction: destructiveActionButton,
149167 text: actionButtonText ?? zulipLocalizations.dialogContinue),
150168 ]));
151169 return DialogStatus (future);
@@ -213,6 +231,7 @@ class UpgradeWelcomeDialog extends StatelessWidget {
213231 actions: [
214232 _adaptiveAction (
215233 onPressed: () => Navigator .pop (context),
234+ isDefaultAction: true ,
216235 text: zulipLocalizations.upgradeWelcomeDialogDismiss)
217236 ]);
218237 }
0 commit comments