如何使用Flutter在Android中显示iOS / cupertino警报对话框?

4 dart flutter

我试图在Flutter应用中显示一个iOS主题对话框,但我无法在文档中找到任何内容

yel*_*ver 9

Android主题/样式的关键字为Material(默认设计),iOS主题/样式的关键字为 Cupertino。每个iOS主题小部件都有前缀Cupertino。因此,根据您的要求,我们可以猜测关键字为CupertinoDialog / CupertinoAlertDialog

您可以在这里全部参考 https://flutter.io/docs/reference/widgets/cupertino

new CupertinoAlertDialog(
  title: new Text("Dialog Title"),
  content: new Text("This is my content"),
  actions: <Widget>[
    CupertinoDialogAction(
      isDefaultAction: true,
      child: Text("Yes"),
    ),
    CupertinoDialogAction(
      child: Text("No"),
    )
  ],
)
Run Code Online (Sandbox Code Playgroud)


小智 7

首先你检查 platForm ios 还是 android .. 然后返回当前设备的小部件..

Future<bool> showAlertDialog({
  @required BuildContext context,
  @required String title,
  @required String content,
  String cancelActionText,
  @required String defaultActionText,
}) async {
  if (!Platform.isIOS) {
    return showDialog(
      context: context,
      builder: (context) => AlertDialog(
        title: Text(title),
        content: Text(content),
        actions: <Widget>[
          if (cancelActionText != null)
            FlatButton(
              child: Text(cancelActionText),
              onPressed: () => Navigator.of(context).pop(false),
            ),
          FlatButton(
            child: Text(defaultActionText),
            onPressed: () => Navigator.of(context).pop(true),
          ),
        ],
      ),
    );
  }

  // todo : showDialog for ios
  return showCupertinoDialog(
    context: context,
    builder: (context) => CupertinoAlertDialog(
      title: Text(title),
      content: Text(content),
      actions: <Widget>[
        if (cancelActionText != null)
          CupertinoDialogAction(
            child: Text(cancelActionText),
            onPressed: () => Navigator.of(context).pop(false),
          ),
        CupertinoDialogAction(
          child: Text(defaultActionText),
          onPressed: () => Navigator.of(context).pop(true),
        ),
      ],
    ),
  );
}

Run Code Online (Sandbox Code Playgroud)


小智 6

我在ShowDialog中使用了CupertinoAlertDialog,您可以在下面找到相同的内容

showDialog(
      context: context,
      builder: (BuildContext context) => CupertinoAlertDialog(
        title: new Text("Dialog Title"),
        content: new Text("This is my content"),
        actions: <Widget>[
          CupertinoDialogAction(
            isDefaultAction: true,
            child: Text(StringConstants.BIOMETRICAUTHORIZED),
          ),
          CupertinoDialogAction(
            child: Text("No"),
          )
        ],
      )
    );
Run Code Online (Sandbox Code Playgroud)