[Flutter] TextField.enableSuggestions: falseにするとAndroidの日本語キーボードが開かない
初めまして。モバイルアプリエンジニアの澤田です。
普段はFlutterをメインにモバイルの開発をしています。
今回はFlutterのTextFieldの小さな発見をしたので、ここに記載します。
検索しても、該当する記事はなく、日本語キーボード(実際には中国語や韓国語などの「変換前提の言語キーボード(IME)」も同じ症状になる。)固有の壁であることから、発見した方も少ないのではないかと推測します。

この記事では、日本語キーボードが開かなかった解決策と原因の考察をまとめます。
結論
Androidでのみ日本語キーボードが開かない場合は以下のように修正します。
TextField(
- enableSuggestions: false
+ enableSuggestions: true
// またはenableSuggestionsを削除(デフォルトが true)
// ...
)
TextField.enableSuggestionsとは
Whether to show input suggestions as the user types.
This flag only affects Android. On iOS, suggestions are tied directly to autocorrect, so that suggestions are only shown when autocorrect is true. On Android autocorrection and suggestion are controlled separately.
Defaults to true.
入力済みの文字をヒントに、単語の予測をする機能のことです。
(例) re と入力 -> 「re really ready」のようにキーボード上部に表示

英語のキーボードでいうと、「入力しそうな単語の予測(suggestion)機能」と言えそうです。
なぜ日本語キーボードが開けなかったのか
ここからは実際の挙動からの推測です。
日本語のキーボードでsuggestionに該当する機能は何か。それは、「予測変換」と一般に呼ばれる機能です。これはキーボードだけでは表現できない日本語を補うために、必ず必要となる機能です。
そのため、TextField.enableSuggestions: falseにすると、IME(キーボードアプリ)により以下のように判断されます:
- suggestion (予測変換含む) が不要な入力フィールド
- 予測変換が前提の日本語入力モードは不要
- 日本語キーボードに切り替えるために地球儀ボタンをタップすると、デフォルトの英語キーボードにフォールバック
これが原因ではないかと考えます。
実際、キーボードの切り替え(地球儀ボタン)をタップすると、スペースボタンに表示される文字列が「English」から「QWERTY」に切り替わります。そのため、「キーボードを切り替えられるが、フォールバックで英語になる」という解釈が適切と思います。
他の言語のキーボードはどうか
予測変換が必須なキーボードの実験として、中国語のキーボードも試しました。

こちらも、日本語と同様の症状が出ました。
TextField.enableSuggestions: falseで中国語キーボードが開きません。
韓国語なども同じく変換が必要なIMEなので、同じ挙動になると思います。
なぜAndroidのみ症状が出たのか
前項のFlutter公式ドキュメントには以下の記載があります。
This flag only affects Android.
つまり、このフラグの影響範囲がAndroidのみのため、iOSは問題なく日本語キーボードを開けたということです。
まとめ by ChatGPT
ChatGPTに今回の件を報告しました:
enableSuggestions: falseにすると日本語キーボードが表示されないことがわかった
回答:
Android では、enableSuggestions: false を付けると「予測変換・サジェストを使わない入力フィールド」として OS/IME に伝わる
一部の日本語キーボードは、この設定が付いたフィールドで「日本語変換前提の入力モード」を出さず、英字キーボードだけを出す挙動をするため、日本語キーボードが出ない状態になる
「日本語変換前提の入力モード」のキーボードはサジェスト機能を切ると前提が崩れて開けなくなる、ということのようです。参考になります。
全く関係のない話
みなさんはChatGPTで2つの選択肢が出たらどのような基準で一方を選択しているでしょうか?
- 両方読んで正しそうな方を選ぶ
- 左/右を好きな方を決めうちで選ぶ
- 表や図などグラフィカルな方を選ぶ
ぼくは大体「文章が長い方」を選びます。両方の選択肢を読むと疲れるけど、情報量が多い方が正しそうという考えで決めています。
また、3つ目にあげた「表や図などグラフィカル」な方があればそっちを選びます。
みなさんはどうしてるかコメントで教えてください。
Discussion