Flutter TextFormField被键盘隐藏

RIF*_*FAL 7 dart flutter flutter-layout

注意:我使用Navigator.of(context).push来推送ModalRoute,

嗨,我的页面上ModalRouteTextFormField,但是当键盘显示时,输入正被键盘隐藏,如何解决呢?

在此处输入图片说明

return Container(
      child: ListView(
          children: <Widget>[
            //other widget
            SizedBox(height: _qtyAnimation.value),
            Row(
              children: <Widget>[
                Expanded(
                  child: Text(
                    "Jumlah",
                    style: TextStyle(fontWeight: FontWeight.bold),
                  ),
                ),
                SizedBox(
                  width: 145.0,
                  child: TextFormField(
                    focusNode: _qtyFocusNode,
                    controller: qty,
                    keyboardType: TextInputType.number,
                    textAlign: TextAlign.center,
                    decoration: InputDecoration(
                      contentPadding: EdgeInsets.all(0.0),
                      prefixIcon: IconButton(
                        icon: Icon(Icons.remove),
                        onPressed: () {},
                      ),
                      border: OutlineInputBorder(
                        borderSide:
                            BorderSide(color: Colors.grey, width: 0.1),
                      ),
                      suffixIcon: IconButton(
                        icon: Icon(Icons.add),
                        onPressed: () {},
                      ),
                    ),
                  ),
                ),
              ],
            ),
          ],
    );
Run Code Online (Sandbox Code Playgroud)

多数民众赞成在我的代码,我尝试与focusnode和更多,仍然相同的结果请帮助我

Chr*_*ris 55

这对我有用...

首先添加这个

final bottom = MediaQuery.of(context).viewInsets.bottom;
Run Code Online (Sandbox Code Playgroud)

然后使用 SingleChildScrollView() 像这样环绕主小部件(无论您使用什么,例如 Column、ListView 等)...

你需要“反向:真实”

Widget build{
return Scaffold(
body: SingleChildScrollView(
reverse: true;
child: Container(...
Run Code Online (Sandbox Code Playgroud)

您还需要 Scaffold 的这两行代码。

return Scaffold(
resizeToAvoidBottomInset: false,
resizeToAvoidBottomPadding: false,
body: SingleChildScrollView(...
Run Code Online (Sandbox Code Playgroud)

最后,参考 EdgeInsets 的“底部”..

body: SingleChildScrollView(
reverse: true,
child: Padding(
padding: EdgeInsets.only(bottom: bottom),
child: Container(...
Run Code Online (Sandbox Code Playgroud)


小智 10

我有一个类似的问题。我尝试了所有解决方案,但没有奏效。最后我删除了

<item name="android:windowFullscreen">true</item>
Run Code Online (Sandbox Code Playgroud)

从我在 android 文件夹中的 style.xml 文件,并解决问题。


小智 10

您需要将所有内容都包装在SingleChildScrollView 中,并将反向设置为 true。

SingleChildScrollView(
   reverse: true,
   child: Container(),
);
Run Code Online (Sandbox Code Playgroud)

这对我有用!

  • 如果您的内容默认不滚动(不显示键盘),这是最简单的解决方案。事实上,如果您的内容大于屏幕高度,即使没有键盘,它也总是会滚动到底部。那可能不是你想要的。 (4认同)

RIF*_*FAL 7

谢谢解决这个问题,在文本字段的底部填充

    Padding(
             padding: EdgeInsets.only(
             bottom: MediaQuery.of(context).viewInsets.bottom));
Run Code Online (Sandbox Code Playgroud)

和母马反向列表


Bla*_*nka 5

这有几个方法(12月3日的第三届 2018):

您可以阅读以下内容以获得更好的解决方案:当我选择一个Textfield时,键盘将移到它上面

内部Scaffold()添加:resizeToAvoidBottomPadding: false,

您也可以包装你TextWidgetSingleChildScrollView()。这将使您可以在显示键盘时进行滚动。