showTextInputDialog function
Future<List<String>?>
showTextInputDialog(- {required BuildContext context,
- required List<DialogTextField> textFields,
- String? title,
- String? message,
- String? okLabel,
- String? cancelLabel,
- bool isDestructiveAction = false,
- bool barrierDismissible = true,
- AdaptiveStyle? style,
- bool useRootNavigator = true,
- VerticalDirection actionsOverflowDirection = VerticalDirection.up,
- bool fullyCapitalizedForMaterial = true,
- WillPopCallback? onWillPop,
- bool autoSubmit = false,
- AdaptiveDialogBuilder? builder,
- RouteSettings? routeSettings}
)
Implementation
@useResult
Future<List<String>?> showTextInputDialog({
required BuildContext context,
required List<DialogTextField> textFields,
String? title,
String? message,
String? okLabel,
String? cancelLabel,
bool isDestructiveAction = false,
bool barrierDismissible = true,
AdaptiveStyle? style,
bool useRootNavigator = true,
VerticalDirection actionsOverflowDirection = VerticalDirection.up,
bool fullyCapitalizedForMaterial = true,
WillPopCallback? onWillPop,
bool autoSubmit = false,
AdaptiveDialogBuilder? builder,
RouteSettings? routeSettings,
}) {
final theme = Theme.of(context);
final adaptiveStyle = style ?? AdaptiveDialog.instance.defaultStyle;
final effectiveStyle = adaptiveStyle.effectiveStyle(theme);
switch (effectiveStyle) {
// ignore: deprecated_member_use_from_same_package
case AdaptiveStyle.cupertino:
case AdaptiveStyle.iOS:
return showCupertinoDialog(
context: context,
useRootNavigator: useRootNavigator,
routeSettings: routeSettings,
builder: (context) {
final dialog = IOSTextInputDialog(
textFields: textFields,
title: title,
message: message,
okLabel: okLabel,
cancelLabel: cancelLabel,
isDestructiveAction: isDestructiveAction,
style: adaptiveStyle,
useRootNavigator: useRootNavigator,
onWillPop: onWillPop,
autoSubmit: autoSubmit,
);
return builder == null ? dialog : builder(context, dialog);
},
);
case AdaptiveStyle.macOS:
return showMacosAlertDialog(
routeSettings: routeSettings,
useRootNavigator: useRootNavigator,
context: context,
builder: (context) {
final dialog = MacThemeWrapper(
child: MacOSTextInputDialog(
textFields: textFields,
title: title,
message: message,
okLabel: okLabel,
cancelLabel: cancelLabel,
isDestructiveAction: isDestructiveAction,
style: adaptiveStyle,
useRootNavigator: useRootNavigator,
onWillPop: onWillPop,
autoSubmit: autoSubmit,
),
);
return builder == null ? dialog : builder(context, dialog);
},
);
case AdaptiveStyle.material:
return showModal(
context: context,
useRootNavigator: useRootNavigator,
routeSettings: routeSettings,
configuration: FadeScaleTransitionConfiguration(
barrierDismissible: barrierDismissible,
),
builder: (context) {
final dialog = MaterialTextInputDialog(
textFields: textFields,
title: title,
message: message,
okLabel: okLabel,
cancelLabel: cancelLabel,
isDestructiveAction: isDestructiveAction,
style: adaptiveStyle,
actionsOverflowDirection: actionsOverflowDirection,
useRootNavigator: useRootNavigator,
fullyCapitalized: fullyCapitalizedForMaterial,
onWillPop: onWillPop,
autoSubmit: autoSubmit,
);
return builder == null ? dialog : builder(context, dialog);
},
);
case AdaptiveStyle.adaptive:
assert(false);
return Future.value();
}
}