Flutter---showCupertinoDialog

核心特点

①半透明背景

②圆角设计

③平滑动画

④自适应深色模式

方法签名

Dart 复制代码
Future<T?> showCupertinoDialog<T>({
  required BuildContext context,
  required WidgetBuilder builder,
  bool barrierDismissible = true,
  String? barrierLabel,
  RouteSettings? routeSettings,
})

实现的简单案例

实现的具体代码

Dart 复制代码
// 显示对话框的方法
  void _showDeleteDialog() {
    showCupertinoDialog(
      context: context,
      builder: (context) => CupertinoAlertDialog(
        title: const Text("提示"), //对话框标题
        content: const Text("确定要删除吗?"),//对话框内容
        actions: [
          CupertinoDialogAction(
            child: const Text("取消"),//取消按钮
            onPressed: () => Navigator.pop(context),
          ),
          CupertinoDialogAction(
            child: const Text("确认"),//确认按钮
            onPressed: () => deleteItem(),
          ),
        ],
      ),
    );
  }

实现的完整代码

Dart 复制代码
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class HomePage extends StatefulWidget{
  const HomePage({super.key});

  @override
  State<StatefulWidget> createState() => _HomePageState();

}

class _HomePageState extends State<HomePage>{

  // 删除项目的方法
  void deleteItem() {
    Navigator.pop(context); // 关闭对话框
    // 这里添加删除逻辑的具体逻辑
    print("项目已删除");
  }

  // 显示对话框的方法
  void _showDeleteDialog() {
    showCupertinoDialog(
      context: context,
      builder: (context) => CupertinoAlertDialog(
        title: const Text("提示"), //对话框标题
        content: const Text("确定要删除吗?"),//对话框内容
        actions: [
          CupertinoDialogAction(
            child: const Text("取消"),//取消按钮
            onPressed: () => Navigator.pop(context),
          ),
          CupertinoDialogAction(
            child: const Text("确认"),//确认按钮
            onPressed: () => deleteItem(),
          ),
        ],
      ),
    );
  }

  //UI构建
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
           // const Text("home页面"),
            const SizedBox(height: 20),
            CupertinoButton(
              onPressed: _showDeleteDialog,//给按钮引入点击删除事件
              child: const Text("删除对话框"),
            ),
          ],
        ),


      ),
    );
  }

}

核心组件

CupertinoAlertDialog

典型结构

Dart 复制代码
CupertinoAlertDialog(
  title: Text("标题"),
  content: Text("内容文本"),
  actions: [
    CupertinoDialogAction(...),
    CupertinoDialogAction(...),
  ],
)
CupertinoDialogAction是对话框操作按钮

可以设置关键属性

Dart 复制代码
isDefaultAction: true, // 文字会加粗显示,强调样式(通常用于确认),
isDestructiveAction: true, // 文字显示为红色,警示样式(红色文字)

效果图为

相关推荐
難釋懷6 分钟前
Nginx获取客户端真实IP
服务器·前端·nginx
少爷晚安。7 分钟前
Java基础02_JDK&JRE下载安装及环境配置
java·开发语言
甲维斯26 分钟前
GLM5.2超过Opus4.8Think,全球第二了!
前端·人工智能·ai编程
by————组态29 分钟前
Ricon组态系统 - 新一代Web可视化组态平台
前端·后端·物联网·架构·组态·组态软件
JieE21229 分钟前
手把手带你用纯 CSS 实现一个 3D 旋转魔方,这些前端基础你能打几分?
前端·css·html
秋波。未央35 分钟前
Java Agent 开发 · Day 1 学习笔记(含作业完整标准答案)
java·笔记·学习
何以解忧,唯有..38 分钟前
Go语言中的const:常量声明与iota枚举详解
java·开发语言·golang
范什么特西39 分钟前
Spring boot细节
java·spring boot·后端
lichenyang45342 分钟前
鸿蒙 Web 容器(二):H5 和 ArkTS 说话前,先定一份「协议」
前端
Ysouy44 分钟前
Spring Data Elasticsearch 全流程学习教程
java·spring·elasticsearch