問題タブ [statefulwidget]
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 - Flutter: 次のルートに移動するときに、前のルートの build() メソッドが呼び出されないようにする
私のフラッター アプリはstatefulWidget
、最初のルートとしてスプラッシュ スクリーン ( ) を表示しています。このルートは、バックグラウンドで API を呼び出してデータを取得している間、アニメーションを表示しています。
データが受信され、アニメーションが完了すると、2 番目のルートに移動します。
を呼び出してNavigator
2 番目のルートに移動すると、2 番目のルートが表示されますが、呼び出されている最初のルートの API からの応答が再び表示されます。
2 番目のルートがビルドされると、前のルートのビルド メソッドも呼び出され、不要な API 呼び出しが再度行われることが判明しました。
この動作を回避するにはどうすればよいですか?、これはバグに違いないと思いますFlutter
??
現在のフロー (望ましくない): SplashRoute(build) ---> Navigator ---> HomeRoute(build)+SplashRoute(build)
必要なフロー: SplashRoute(ビルド) ---> Navigator ---> HomeRoute(ビルド)
flutter - BlocBuilder を使用する StatefulWidget が状態の変更時に再構築されない
Flutter (BloC パターン) を使用して、複数のカメラ フィードをストリーミングするウィジェットを作成しています。フィードをクリックすると、メイン フィードに表示されます (Google ハングアウトでは、話している人の顔が正面中央に表示され、他の人は横に小さく表示されます)。
選択したフィードを切り替えようとすると、状態 ( int
) が によって期待される新しい値で生成されBloc
ますMapEventToState
。ただし、メインCamFeed
ウィジェットはフィードを切り替えません。
StatefulWidget
aを返す aのこの使用法についての私の理解は、その int が変更されたときに再構築するBlocBuilder<CamSwitcherBloc, int>
必要があります。代わりに、何も起こっていないようです。最初に作成されたとき、およびその中の子の 1 つの状態が更新されbuild()
たときにのみ呼び出されます。CamFeed
天文台を通じて確認したところ、予想どおり、CamSwitcherBloc
.
だから- 私はそれを考えるのは間違っています:
ブロック内の MapEventToState が新しい値 (selectedCam、以下のビルダーに入力) を生成する場合build()
、ウィジェットに対して呼び出す必要があります。
それが正しければ、どこで狩りを続けるかについての提案をいただければ幸いです。
ありがとう!
flutter - Flutter の setState() メソッドは、for ループの最後の呼び出しまでビューを更新しません
問題
Flutter を使用して並べ替えビジュアライザーを構築しようとしています。を使用してCustomPainter
、ソートする整数リストの値に対応する垂直線を描画しました。アプリケーションは、ユーザーが [バブル ソート] オプションをクリックするとDropDownButton
(後でソート アルゴリズムを追加する予定です)、CustomPainter
キャンバスの垂直線が自動的にソートされるように設定されています。
コード
ただし、最終的にソートされたものだけがarr
キャンバスに視覚化され、何らかの理由ですべての中間ステップがスキップされます。しかし、ログはリストの更新を示しています。
スクリーンショット
ランダムリストの初期画面 ドロップダウンボタン のバブルソートをクリック ソートされたリスト
このsleep()
機能はアニメーションをエミュレートするためだけに追加されたものであり、この問題が解決されたら、適切なアニメーションに置き換える予定です。また、アプリケーションが少し醜いことは承知していますが、UI を磨く前にロジックを正しく取得したいと考えています。