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("确定"),
            ),
          ],
        );
      },
    );
  }
相关推荐
提子拌饭13334 分钟前
风息时钟:鸿蒙Flutter 实现的自然风格时钟应用
flutter·华为·架构·开源·harmonyos
浮芷.4 小时前
Flutter 框架跨平台鸿蒙开发 - AR动物互动应用
flutter·ar·harmonyos
加农炮手Jinx5 小时前
Flutter 组件 conventional 适配鸿蒙 HarmonyOS 实战:约定式提交标准,构建自动化版本治理与 CI/CD 质量治理架构
flutter·harmonyos·鸿蒙·openharmony
王码码20355 小时前
Flutter 三方库 appstream 的鸿蒙化适配指南 - 驾驭 Linux 生态元数据规范,打造高性能、标准化、国际化的 OpenHarmony 桌面应用商店分发基石
flutter·harmonyos·鸿蒙·openharmony
见山是山-见水是水5 小时前
Flutter 框架跨平台鸿蒙开发 - AR植物养护助手
flutter·华为·ar·harmonyos
autumn20056 小时前
Flutter 框架跨平台鸿蒙开发 - 历史人物对话
服务器·flutter·华为·harmonyos
autumn20056 小时前
Flutter 框架跨平台鸿蒙开发 - 社区闲置循环
flutter·华为·harmonyos
浮芷.8 小时前
Flutter 框架跨平台鸿蒙开发 - 家庭健康监测云应用
科技·flutter·华为·harmonyos·鸿蒙
世人万千丶8 小时前
Flutter 框架跨平台鸿蒙开发 - 宠物语言翻译器应用
学习·flutter·华为·开源·harmonyos·鸿蒙
见山是山-见水是水8 小时前
Flutter 框架跨平台鸿蒙开发 - NPC模拟器
flutter·华为·harmonyos