問題タブ [rxdart]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flutter - StreamBuilderがLayoutBuilder内にある場合のFlutter無限ループ
ここで説明されているように、 LayoutBuilderを使用してページを作成しています
LayoutBuilder 内に、ブロック クラスSignupFormBlo cを利用したTextFieldを持つStreamBuilderを配置しました。ストリームはBehaviorSubjectです
誰かが入力に何かを入れると、ストリームのシンクである onChanged 関数がトリガーされます。そのため、ストリームに値を追加し、その値を StreamTransformer に渡して値を検証し、 StreamBuilderにエラー メッセージ (値が無効な場合) で TextField を再度構築させます。
これが問題の始まりです。
TextField をクリックして何かを入力すると、次のような無限ループが始まります。
- StreamBuilder はストリーム内の新しい値を認識します
- StreamBuilder は TextField を再構築しようとします
- これがどのように LayoutBuilder ビルダー関数をトリガーするか
- LayoutBuilder ビルダー関数は、StreamBuilder を再度ビルドします。
- StreamBuilderはストリームで値を見つけます(BehaviorSubjectのため)
- 最初のいじめからやり直して無限ループ
ヒント: BehaviorSubject を PublishSubject に変更すれば、すべて問題ありません
ヒント 2: StreamBuilder を完全に削除して TextField を空白のままにすると、すべてのエントリで LayoutBuilder ビルダー関数が実行されていることがわかります。それは正常な動作ですか?