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("确定"),
            ),
          ],
        );
      },
    );
  }
相关推荐
西西学代码13 小时前
Flutter---Button
flutter
Miketutu13 小时前
Flutter布局 --- Container
flutter
QuantumLeap丶20 小时前
《Flutter全栈开发实战指南:从零到高级》- 01 - 从零开始搭建你的第一个Flutter应用
flutter
西西学代码1 天前
Flutter---ListView
flutter
盆鱼宴之武冈分宴1 天前
flutter openharmony项目新手从0到1的保姆级教程
flutter·openharmony
程序员老刘2 天前
Dart的宏取消了,期待3年的功能,说没就没了?
flutter·客户端·dart
_大学牲2 天前
Flutter 之魂 GetX🔥(三)深入掌握依赖管理
前端·flutter
西西学代码2 天前
Flutter---showCupertinoDialog
java·前端·flutter