web-dev-qa-db-ja.com

キーボードが表示されると、Flutterウィジェットのサイズが変更されます。これを防ぐ方法は?

次のような拡張ウィジェットの列があります。

 return new Container(
      child: new Column(
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: <Widget>[
          new Expanded(
            flex: 1,
            child: convertFrom,
          ),
          new Expanded(
            flex: 1,
            child: convertTo,
          ),
          new Expanded(
            flex: 1,
            child: description,
          ),
        ],
      ),
    );

次のようになります。 enter image description here

convertFrom、TextFieldが含まれます。このテキストフィールドをタップすると、Androidキーボードが画面に表示されます。これにより画面サイズが変更されるため、ウィジェットのサイズは次のように変更されます。 enter image description here

列のサイズが変更されないように、キーボードを画面に「オーバーレイ」する方法はありますか? Expandedウィジェットを使用せず、各ウィジェットの高さをハードコードしない場合、ウィジェットのサイズは変更されませんが、キーボードが表示されたときに黒と黄色のストライプエラーが表示されます(十分なスペースがないため) )。また、これはすべての画面サイズに対して柔軟ではありません。

これがAndroid固有かFlutter固有かはわかりません。

28
Mary

Scaffoldで、resizeToAvoidBottomInsetプロパティをfalseに設定します。

プロパティ "resizeToAvoidBottomPadding"は非推奨になりました。..Scaffoldで、resizeToAvoidBottomPaddingプロパティをfalseに設定します。

97
aziza

非推奨の resizeToAvoidBottomInset の代わりに falseresizeToAvoidBottomPaddingに設定します。

    return Scaffold(
      resizeToAvoidBottomInset : false,
      body: YourWidgets(),
    );
4
ArtiomLK

ユースケースによっては、 listview の使用も検討できます。これにより、十分なスペースがないときにコンテンツがスクロールします。例として、ギャラリーアプリの textfield デモを見ることができます

2
aptik