IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> FLutter Dialog setState及 Dialog被输入框挡住的问题 -> 正文阅读

[移动开发]FLutter Dialog setState及 Dialog被输入框挡住的问题

1.FLutter Dialog setState

使用StatefulBuilder组件,使用setState1方法管理Dialog状态

showDialog(
    context: context,
    builder: (context) {
     return StatefulBuilder(
       builder: (BuildContext context1,
           void Function(void Function()) setState1) {
         return Scaffold(
           backgroundColor: Colors.transparent,
           body: Center(
             child: Container(
               width: 600.px,
               height: 610.px,
               padding: EdgeInsets.all(20.px),
               decoration: BoxDecoration(
                 borderRadius: BorderRadius.circular(30.px),
                 color: Colors.white,
               ),
               child: Column(
                 children: [
                   Text("创建房间"),
                   SizedBox(height: 20.px),
                   Row(
                     mainAxisAlignment: MainAxisAlignment.spaceAround,
                     children: [
                       if (roomList != null)
                         for (var data in roomList!)
                           Column(
                             children: [
                               GestureDetector(
                                 onTap: () {
                                   chooseType = data.type;
                                   print(chooseType);
                                   setState1(() {});
                                 },
                                 child: Container(
                                   child: Image.network(
                                     data.icon,
                                     width: 230.px,
                                   ),
                                   decoration: BoxDecoration(
                                       border:
                                       chooseType == data.type
                                           ? Border.all(
                                           color: Colors
                                               .blueAccent,
                                           width: 3.px)
                                           : Border()),
                                 ),
                               ),
                               Text(data.name)
                             ],
                           )
                     ],
                   ),
                   SizedBox(height: 40.px),
                   Row(
                     mainAxisAlignment: MainAxisAlignment.center,
                     children: [
                       Text(
                         "房间名称",
                       ),
                       SizedBox(
                         width: 30.px,
                       ),
                       Container(
                         width: 300.px,
                         height: 50.px,
                         color: Colors.black12,
                         child: TextField(
                           decoration: InputDecoration(),
                           controller: textEditingController,
                         ),
                       )
                     ],
                   ),
                   SizedBox(height: 40.px),
                   Row(
                     mainAxisAlignment: MainAxisAlignment.center,
                     children: [
                       GestureDetector(
                         onTap:(){
                           NavigatorUtil.pop(context);
                         },
                         child: Container(
                           width: 220.px,
                           height: 80.px,
                           decoration: BoxDecoration(
                             borderRadius: BorderRadius.circular(30.px),
                             color: Colors.black12,
                           ),
                           alignment: Alignment.center,
                           child: Text(
                             "取消",
                             style: TextStyle(color: Colors.purple),
                           ),
                         ),
                       ),
                       SizedBox(
                         width: 30.px,
                       ),
                       GestureDetector(
                         onTap: () {
                           if (textEditingController.text == "")
                             return;
                           if (chooseType == "") return;
                           _creatRoomV2(textEditingController.text);
                         },
                         child: Container(
                             width: 220.px,
                             height: 80.px,
                             decoration: BoxDecoration(
                               borderRadius:
                               BorderRadius.circular(30.px),
                               color: Colors.purple,
                             ),
                             alignment: Alignment.center,
                             child: Text("确定",
                                 style: TextStyle(
                                     color: Colors.white))),
                       )
                     ],
                   ),
                 ],
               )
             ),
           ),
         );
       },
     );
    });

2.Dialog被输入框挡住

使用背景颜色为透明的Scaffold组件包裹Container

核心代码:

Scaffold(
           backgroundColor: Colors.transparent,
           body: Center(
showDialog(
    context: context,
    builder: (context) {
     return StatefulBuilder(
       builder: (BuildContext context1,
           void Function(void Function()) setState1) {
         return Scaffold(
           backgroundColor: Colors.transparent,
           body: Center(
             child: Container(
               width: 600.px,
               height: 610.px,
               padding: EdgeInsets.all(20.px),
               decoration: BoxDecoration(
                 borderRadius: BorderRadius.circular(30.px),
                 color: Colors.white,
               ),
               child: Column(
                 children: [
                   Text("创建房间"),
                   SizedBox(height: 20.px),
                   Row(
                     mainAxisAlignment: MainAxisAlignment.spaceAround,
                     children: [
                       if (roomList != null)
                         for (var data in roomList!)
                           Column(
                             children: [
                               GestureDetector(
                                 onTap: () {
                                   chooseType = data.type;
                                   print(chooseType);
                                   setState1(() {});
                                 },
                                 child: Container(
                                   child: Image.network(
                                     data.icon,
                                     width: 230.px,
                                   ),
                                   decoration: BoxDecoration(
                                       border:
                                       chooseType == data.type
                                           ? Border.all(
                                           color: Colors
                                               .blueAccent,
                                           width: 3.px)
                                           : Border()),
                                 ),
                               ),
                               Text(data.name)
                             ],
                           )
                     ],
                   ),
                   SizedBox(height: 40.px),
                   Row(
                     mainAxisAlignment: MainAxisAlignment.center,
                     children: [
                       Text(
                         "房间名称",
                       ),
                       SizedBox(
                         width: 30.px,
                       ),
                       Container(
                         width: 300.px,
                         height: 50.px,
                         color: Colors.black12,
                         child: TextField(
                           decoration: InputDecoration(),
                           controller: textEditingController,
                         ),
                       )
                     ],
                   ),
                   SizedBox(height: 40.px),
                   Row(
                     mainAxisAlignment: MainAxisAlignment.center,
                     children: [
                       GestureDetector(
                         onTap:(){
                           NavigatorUtil.pop(context);
                         },
                         child: Container(
                           width: 220.px,
                           height: 80.px,
                           decoration: BoxDecoration(
                             borderRadius: BorderRadius.circular(30.px),
                             color: Colors.black12,
                           ),
                           alignment: Alignment.center,
                           child: Text(
                             "取消",
                             style: TextStyle(color: Colors.purple),
                           ),
                         ),
                       ),
                       SizedBox(
                         width: 30.px,
                       ),
                       GestureDetector(
                         onTap: () {
                           if (textEditingController.text == "")
                             return;
                           if (chooseType == "") return;
                           _creatRoomV2(textEditingController.text);
                         },
                         child: Container(
                             width: 220.px,
                             height: 80.px,
                             decoration: BoxDecoration(
                               borderRadius:
                               BorderRadius.circular(30.px),
                               color: Colors.purple,
                             ),
                             alignment: Alignment.center,
                             child: Text("确定",
                                 style: TextStyle(
                                     color: Colors.white))),
                       )
                     ],
                   ),
                 ],
               )
             ),
           ),
         );
       },
     );
    });
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-10 10:58:28  更:2021-09-10 11:00:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:03:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码