web-dev-qa-db-ja.com

Flutter Keyboardはテキストフィールドを非表示にします

私ははためくのは初めてです。テキストフィールドを持つフォームを追加しました。テキストフィールドをクリックするとキーボードが表示され、テキストフィールドが上がります。

これは私のコードです:

Widget build(BuildContext context) {

MediaQueryData mediaQuery = MediaQuery.of(context);
return new Scaffold(
  body:  new Container(
      color: Colors.purple,
      constraints: new BoxConstraints.expand(),
      padding: EdgeInsets.only(top: 10.0,left: 10.0,right: 10.0, bottom: mediaQuery.viewInsets.bottom, ),
      child: SingleChildScrollView(
        child: Container(
            child: Column(
                crossAxisAlignment: CrossAxisAlignment.center,
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  SizedBox(height: 12.0),
                  Text(
                    'What is your Business Name?',
                    style: TextStyle(fontSize: 24.0),
                  ),
                  AppForm(),
                ],
              ),
            padding: EdgeInsets.only(left: 10.0,right: 10.0, bottom: mediaQuery.viewInsets.bottom),
            decoration: BoxDecoration(
              borderRadius: BorderRadius.all(Radius.circular(30.0)),
              color: Colors.white,
                ),
              )
          )
      ),
    );
  }

これは、キーボードを開かない場合の結果です: Image without keyboard

これは、キーボードを開いた後の画像です。 キーボードを開いた後の画像


これが私のフラッタードクターの出力です。

Doctor summary (to see all details, run flutter doctor -v): [√] Flutter 
(Channel beta, v0.5.1, on Microsoft Windows [Version 10.0.17134.165], locale 
en-US) [√] Android toolchain - develop for Android devices (Android SDK 
28.0.0) [√] Android Studio (version 3.1) [!] VS Code, 64-bit edition (version 
1.25.1) [!] Connected devices ! No devices available ! Doctor found issues in 
2 categories.

これを修正する方法はありますか?

8
Nirodya Gamage

これは私の場合でした。あなたは間違いなく別の足場の中に足場をラップしています。フラッターアプリ内のスキャフォールドウィジェット、つまりメインレイアウトは1つだけにしてください。持っているすべての祖先の足場を単純に削除し、1つの足場のみを保持します。足場を別の足場にラップしないでください。それにもかかわらず、コンテナ内に足場をラップできます。

Main.Dartファイルでこれを行っていないことを確認してください:-

✖✖

return Scaffold(
body : YourNewFileName(),
);

上記のコードにもかかわらず、これを行います:-✔✔

return YourNewFileName();
7
Aman Malhotra
 new Scaffold(
      appBar: new AppBar(
          ...
      resizeToAvoidBottomPadding: true,
      ....

テキストフィールドがキーボードで隠れていた問題を修正

5
songoku1610

resizeToAvoidBottomPadding isDeprecated use代わりにresizeToAvoidBottomInset:true

2
Ya Si

この答えは、上記の質問に特定されたものではありませんが、選択したテキストフィールドをカバーするキーボードにまだ問題がある場合、彼らが何をしようとも有用です。そのような問題を解決しようとして、このページに行きました。

問題が発生する前は、アプリの起動時にスプラッシュスクリーンを改善するためにいくつかの変更を加えていました。誰かの推奨に従って、私は<resources><style> Android/app/src/main/res/valuesフォルダー内のstyles.xmlファイルのセクション

<item name="Android:windowFullscreen">true</item>

これには、キーボードが表示されたときにメインアプリでスクロールアップするフィールドを停止するという予期しない効果がありました。これは一部の人には明らかかもしれませんが、私にはそうではありませんでした。

この情報が誰かを助けることを願っています。

1
GrahamD