显示alertDialog时颤振键盘被关闭

时间:2020-04-18 16:35:01

标签: flutter dart

我在Flutter应用中有一个文本字段,用户可以在其中输入他们的姓名。他们可以按“提交”。但是当名称太短时,我会显示一个对话框。

问题:当显示对话框时,键盘自动关闭,并且警报对话框从上方(当键盘仍处于活动状态时)跳转到下方(当键盘不再处于活动状态时,半秒后)。 / p>

                        showDialog(
                            context: context,
                            builder: (_) => new AlertDialog(
                                  title: Text("Error"),
                                  content:
                                      Text("Name too short"),
                                ));

显示AlertDialog时是否可以保持键盘处于活动状态?

谢谢!

2 个答案:

答案 0 :(得分:1)

我不相信有一种方法可以做你想做的事,但是我已经弄清楚了如何尝试一下,看看你的想法

Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            TextFormField(
              onFieldSubmitted: (String value) async {
                if (value.length < 3) {
                  return await showDialog(
                    context: context,
                    builder: (_) => AlertDialog(
                      title: Text("Error"),
                      content: Column(
                        mainAxisSize: MainAxisSize.min,
                        children: <Widget>[
                          AbsorbPointer(
                            child: TextFormField(
                              cursorColor: Colors.white,
                              decoration: InputDecoration(
                                border: InputBorder.none,
                                hintText: " Name too short",
                                hintStyle: TextStyle(color: Colors.black),
                              ),
                              autofocus: true,
                            ),
                          ),
                        ],
                      ),
                    ),
                  );
                }
              },
            )
          ],
        ),
      ),

答案 1 :(得分:0)

尝试通过这种方式做到这一点:

showDialog(
      context: context,
      builder: (_) {
         SystemChannels.textInput.invokeMethod('TextInput.show');
         return AlertDialog(
            title: Text("Error"),
            content: Text("Name too short"),
         );
     },
);