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, // 文字显示为红色,警示样式(红色文字)

效果图为

相关推荐
小哥Mark2 分钟前
Flutter开发鸿蒙年味 + 实用实战应用|绿色烟花:电子烟花 + 手持烟花
flutter·华为·harmonyos
css趣多多11 分钟前
一个UI内置组件el-scrollbar
前端·javascript·vue.js
C澒31 分钟前
前端整洁架构(Clean Architecture)实战解析:从理论到 Todo 项目落地
前端·架构·系统架构·前端框架
Anastasiozzzz32 分钟前
Java Lambda 揭秘:从匿名内部类到底层原理的深度解析
java·开发语言
骇客野人34 分钟前
通过脚本推送Docker镜像
java·docker·容器
C澒37 分钟前
Remesh 框架详解:基于 CQRS 的前端领域驱动设计方案
前端·架构·前端框架·状态模式
Charlie_lll40 分钟前
学习Three.js–雪花
前端·three.js
铁蛋AI编程实战1 小时前
通义千问 3.5 Turbo GGUF 量化版本地部署教程:4G 显存即可运行,数据永不泄露
java·人工智能·python
onebyte8bits1 小时前
前端国际化(i18n)体系设计与工程化落地
前端·国际化·i18n·工程化
晚霞的不甘1 小时前
CANN 编译器深度解析:UB、L1 与 Global Memory 的协同调度机制
java·后端·spring·架构·音视频