[Flutter]ModalBottomSheetのTextFieldをキーボードで上に移動するには?

Flutter

どうも、ちょげ(@chogetarou)です。

ModalBottomSheet内で使うTextFieldを、キーボードを表示したときに上に移動させる方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

TextFieldをキーボードで上に押し上げるには、PaddingとMediaQueryを使います。

まず、 TextFieldをPaddingのchildに指定します。

そして、Paddingの引数「padding」に、「EgdeInsets.only(bottom : MediaQuery.of(context).viewInsets.bottom)」を指定します。

showModalBottomSheet(
  context: context,
  builder: (BuildContext context) {
    return Padding(
      padding: EdgeInsets.only(
        bottom: MediaQuery.of(context).viewInsets.bottom,
      ),
        child: TextField(),
    );
  },
);

これでキーボードを表示したときにTextFieldを押し上げることが出来ます。

以下は、使用例です。

使用例
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            showModalBottomSheet(
              isScrollControlled: true,
              context: context,
              builder: (BuildContext context) {
                return Container(
                  height: 500,
                  width: double.infinity,
                  color: Colors.white,
                  child: Padding(
                    padding: EdgeInsets.only(
                      bottom: MediaQuery.of(context).viewInsets.bottom,
                    ),
                    child: TextField(
                      decoration: InputDecoration(
                        border: OutlineInputBorder(),
                      ),
                    ),
                  ),
                  alignment: Alignment.center,
                );
              },
            );
          },
          child: Text('Show'),
        ),
      ),
    );
  }

コメント

タイトルとURLをコピーしました