TextField で 'readOnly && !obscureText': is not true. で assert が出てしまう時
事象
Flutter の TextField で下記のように
'readOnly && !obscureText': is not true.
assert で弾かれてクラッシュする時です。
結論
TextEditingController
のカスタムクラスを作る際に
buildTextSpan
メソッドをオーバーライドする際にタップの設定を行わないこと。
ちょっと詳しく
buildTextSpan
メソッドは TextSpan
を戻り値にしていますが、その TextSpan
の children
にタップイベントを含ませないようにしましょう。
原因
よくエラーを見ると GestureRecognizer
あたりでエラーがあります。
RawGestureDetectorState.replaceGestureRecognizers.<anonymous closure> (package:flutter/src/widgets/gesture_detector.dart:1343:38)
RawGestureDetectorState.replaceGestureRecognizers (package:flutter/src/widgets/gesture_detector.dart:1355:6)
おそらく、TextField で編集ができる状態でタップイベントを実装してほしくないという SDK 側の意思があるのでしょう。
確かに文字入力しているときにタップイベントあれば鬱陶しいですからね・・・。
おしまい
需要あるかは分かりませんが、ググっても中々分からなかったので、備忘録で書いておきます。
ご紹介
技術書典で Flutterで作るアプリとゲームの融合 〜電卓騎士の開発Tips〜 を公開しています。
この書籍は Flutter でのちょっと変わった電卓の Tips を色々記載しています。無料ですので良かったら DL してください。
アプリ自体も無料で公開しています。
Author And Source
この問題について(TextField で 'readOnly && !obscureText': is not true. で assert が出てしまう時), 我々は、より多くの情報をここで見つけました https://zenn.dev/asteroid/articles/d94c226bc8c21c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol