Flutter---两种带输入框的对话框

第一种风格

Cupertino方案

CuptinoAlertDialog+CupertinoTextField+CupertinoDialogAction

效果图

具体代码

Dart 复制代码
//创建文本编辑控制器
  //作用:管理TextField的文本内容,监听文本变化,获取和设置文本值,清空文本内容
  final _nameController = TextEditingController();


  //统一使用 Cupertino 风格
  // 带输入框的对话框
  void showChangeName() {
    showCupertinoDialog(
      context: context,
      builder: (context) {
        return CupertinoAlertDialog(
          title: const Text("修改名字"),
          content: Card(
            color: Colors.transparent,
            elevation: 0,
            child: SizedBox(
              height: 45,
              child: CupertinoTextField( // 使用 Cupertino 输入框
                controller: _nameController,
                placeholder: "请输入要修改的名字",
                padding: const EdgeInsets.all(10),
              ),
            ),
          ),
          actions: [
            // 取消按钮
            CupertinoDialogAction(
              child: const Text("取消"),
              onPressed: () => Navigator.pop(context),
            ),
            // 确定按钮
            CupertinoDialogAction(
              isDefaultAction: true, // 强调样式
              child: const Text("确定"),
              onPressed: () {
                // 这里写具体的修改名字的逻辑
                print(_nameController.text);
                Navigator.pop(context);
              },
            ),
          ],
        );
      },
    );
  }

第二种风格

Material方案

AlterDialog+TextField+TextButton

效果图

具体代码

Dart 复制代码
//创建文本编辑控制器
  //作用:管理TextField的文本内容,监听文本变化,获取和设置文本值,清空文本内容
  final _nameController = TextEditingController();


  // 带输入框的对话框
  void showChangeName() {
    showDialog(
      context: context,
      builder: (context) {
        return AlertDialog(
          title: const Text("修改名字"),
          content: TextField(
            controller: _nameController,
            decoration: const InputDecoration(
              hintText: "请输入要修改的名字",
              border: OutlineInputBorder(),
            ),
          ),
          actions: [
            TextButton(
              onPressed: () => Navigator.pop(context),
              child: const Text("取消"),
            ),
            TextButton(
              onPressed: () {
                print(_nameController.text);
                Navigator.pop(context);
              },
              child: const Text("确定"),
            ),
          ],
        );
      },
    );
  }
相关推荐
A懿轩A1 小时前
【2025版 OpenHarmony】GitCode 口袋工具 v1.0.3:Flutter + HarmonyOS 深色模式全面启用
flutter·harmonyos·openharmony·gitcode·开源鸿蒙
食品一少年1 小时前
【Day7-10】开源鸿蒙Flutter 常用组件封装实战(2)
flutter·华为·harmonyos
谢斯9 小时前
编译AppFlowy
flutter
灰灰勇闯IT12 小时前
Flutter×鸿蒙深度融合指南:从跨端适配到分布式能力落地(2025最新实战)
分布式·flutter·harmonyos
x.Jessica13 小时前
关于Flutter在Windows上开发的基本配置时遇到的问题及解决方法
windows·flutter
名字被你们想完了13 小时前
flutter 封装一个 tab
flutter
AiFlutter15 小时前
Flutter实现手电筒亮度修改
flutter
食品一少年17 小时前
【Day7-10】开源鸿蒙之Flutter 的自定义组件封装(1)
flutter·开源·harmonyos
勇气要爆发18 小时前
【第五阶段—高级特性和架构】第六章:自定义Widget开发指南
flutter
白茶三许21 小时前
【2025】Flutter 卡片组件封装与分页功能实现:实战指南
flutter·开源·openharmony