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

效果图为

相关推荐
身如柳絮随风扬5 小时前
Java中的CAS机制详解
java·开发语言
0思必得06 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
风筝在晴天搁浅6 小时前
hot100 78.子集
java·算法
向哆哆6 小时前
打造高校四六级报名管理系统:基于 Flutter × OpenHarmony 的跨端开发实践
flutter·开源·鸿蒙·openharmony·开源鸿蒙
2501_940007896 小时前
Flutter for OpenHarmony三国杀攻略App实战 - 设置功能实现
flutter
东东5166 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino6 小时前
图片、文件的预览
前端·javascript
故事和你917 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
lbb 小魔仙7 小时前
【Harmonyos】开源鸿蒙跨平台训练营DAY9:获取分类数据并渲染
flutter·华为·harmonyos
mocoding7 小时前
Flutter 3D 翻转动画flip_card三方库在鸿蒙版天气预报卡片中的实战教程
flutter·3d·harmonyos