[解決済み] テキストフィールド(オートフォーカスがtrue)を持つボトムシートをキーボードで移動させるには?
2022-06-04 07:56:35
質問
テキストフィールドを持つボトムシートを作り、オートフォーカスをtrueに設定してキーボードがポップアップするようにしようとしています。しかし、ボトムシートはキーボードに重なってしまいます。ボトムシートをキーボードの上に移動させる方法はありますか?
Padding(
padding:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: Column(children: <Widget>[
TextField(
autofocus: true,
decoration: InputDecoration(hintText: 'Title'),
),
TextField(
decoration: InputDecoration(hintText: 'Details!'),
keyboardType: TextInputType.multiline,
maxLines: 4,
),
TextField(
decoration: InputDecoration(hintText: 'Additional details!'),
keyboardType: TextInputType.multiline,
maxLines: 4,
),]);
どのように解決するのですか?
追加
isScrollControlled = true
に
BottomSheetDialog
に変更することで、下のシートが必要な高さいっぱいになり、より確実に
TextField
がキーボードで覆われないようにするためです。
キーボードのパディングを
MediaQuery.of(context).viewInsets.bottom
ノート
もし、あなたの
BottomSheetModel
が
Column
を追加することを確認します。
mainAxisSize: MainAxisSize.min,
を追加しないと、シートが画面全体を覆ってしまいます。
例
showModalBottomSheet(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(top: Radius.circular(25.0))),
backgroundColor: Colors.black,
context: context,
isScrollControlled: true,
builder: (context) => Padding(
padding: const EdgeInsets.symmetric(horizontal:18 ),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Padding(
padding: const EdgeInsets.symmetric(horizontal: 12.0),
child: Text('Enter your address',
style: TextStyles.textBody2),
),
SizedBox(
height: 8.0,
),
Padding(
padding: EdgeInsets.only(
bottom: MediaQuery.of(context).viewInsets.bottom),
child: TextField(
decoration: InputDecoration(
hintText: 'adddrss'
),
autofocus: true,
controller: _newMediaLinkAddressController,
),
),
SizedBox(height: 10),
],
),
));
ご注意ください。
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(top: Radius.circular(25.0))),
必須ではありません。ただ、丸みを帯びた底面のシートを作っているだけです。
padding: MediaQuery.of(context).viewInsets
アップデイト Flutter 2.2がまた変更を壊してしまった!" キーボードがbottomsheetに重ならないように、もう一度bottom paddingを与える必要があります。
関連
-
[解決済み] DartでSingletonを構築する方法とは?
-
[解決済み] Dartの「const」キーワードと「final」キーワードの違いは何ですか?
-
[解決済み] FlutterのColumnの子供の間のスペース
-
[解決済み] constコンストラクタは実際にどのように動作するのですか?
-
[解決済み] Dartのasyncとasync*の違いは何ですか?
-
[解決済み] Dartでインデックスと値でリストを列挙またはマップする
-
[解決済み] フラッター AppBarの高さを設定する
-
[解決済み] Dartでタイムスタンプを取得するには?
-
[解決済み] リスト firstWhere Bad state: 要素なし
-
[解決済み] FlutterでAlertDialogを作るには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] FlutterのColumnの子供の間のスペース
-
[解決済み] Flutter- wrapping text [duplicate] (フラッターテキストラッピング)。
-
[解決済み] constコンストラクタは実際にどのように動作するのですか?
-
[解決済み] Flutter RenderBoxがレイアウトされていない
-
[解決済み] Flutterでステータスバーの色を変えるには?
-
[解決済み] Dartのasyncとasync*の違いは何ですか?
-
[解決済み] Dartでdoubleをintに変換する方法は?
-
[解決済み] 段落内のテキストを太字にする(または書式設定する)にはどうしたらよいですか?
-
[解決済み] Dartの「?」ダブルクエスチョンマークとは何ですか?
-
[解決済み] FlutterでAlertDialogを作るには?