問題タブ [statelesswidget]

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.

0 投票する
1 に答える
11245 参照

dart - Flutter: StatelessWidget.build が複数回呼び出されました

私はいつもここで質問にコードを入れていますが、バグは何千行ものコードのどこかにある可能性があるため、今回は不可能です。でも:

StatelessWidget(ホーム プロパティ)の子孫であるメイン画面のビルド メソッド ( ) は、MaterialApp通常どおり、デバッグ モードでは 1 回呼び出されますが、リリース モードでは 3 回呼び出されることに気付きました。

どのような状況で、このようなことが起こり得るのでしょうか? すでに何度か再現を試みましたが失敗しました。

編集:

問題は、メディアクエリから取得した画面サイズをグローバル変数として保存しているため、どこからでもアクセスできることです。ここで、ツリーのさらに下にあるステートフル ウィジェットの init メソッド内でその変数にアクセスする必要があります。デバッグ モードでは問題ないようですが、リリース モードでは、メディア クエリ (ビルド内にある必要があります) を作成するウィジェットのビルド メソッドが 1 回呼び出され、メディア クエリの結果は Size(0.0, 0.0) になります。 、次に、ツリーのさらに下にあるウィジェットの init メソッドが呼び出され、次にメディア クエリを含む build メソッドがさらに 2 回呼び出されます (今回は正しい画面サイズで)。その結果、init メソッド内で正しい画面サイズが得られません。

0 投票する
1 に答える
18396 参照

dart - ステートレス ウィジェットは独自に破棄しますか?

ブロック パターンの実装をテストするために使用するPostUpdaterWidget拡張を作成しました。StatelessWidgetTextEditingControllers

多くの例で、コントローラーを破棄する必要があることを見てきました。ただし、 a には関数へのメソッドはありoverrideませdisposeStatelessWidget

使用されているコントローラーを破棄する独自の破棄関数を作成し、このウィジェットを使用するユーザーのためにこのウィジェットの変数を作成して、破棄関数を呼び出せるようにすることを考えました。

しかし、私が本当にそれを行う必要があるのか​​、それともこの StatelessWidget が実際に独自に処理するのかを最初に知りたいのです。

自分の考えを進めるべきですか?または、これらのコントローラーを独自に破棄する可能性があるため、そのままにしておきます。これにより、メモリリークを心配する必要がなくなります。