問題タブ [flutter-state]
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.
api - Flutter の initState で取得したデータにアクセスできない
Futureを返すメソッドgetCardsを持つ Cards という名前のクラスがあります。このメソッドを使用して、エンドポイントからカードを取得します。
カード:
プロバイダーのデータ/状態としてCardDataという別のクラスがあります。
Cards からgetCardsにアクセスするオブジェクトを作成したことがわかります。これにより、返された Future にアクセスし、それをcardsListに保存できます。
ここで、すべてのカードを表示するために使用したウィジェットで、プロバイダー データにアクセスするためのaddToListというメソッドを作成しました。
後で他のウィジェットに渡すために、ウィジェットを保存するためのリストをいくつか作成しました。
しかし、ご存知のようにinitStateでaddToListメソッドを使用する必要がありますが、できません。そこで使用すると、アプリ画面が消えます。
flutter - ウィジェットの複数のインスタンス間でフラッター共有状態
私のフラッター アプリにはConnectivityStatus
、ラズベリー パイへのアプリの現在の接続状態を表示するウィジェットがあります。initState
私のウィジェットでは、タイマーをサブスクライブして 5 秒ごとに接続をチェックし、それに応じて状態を更新してから、廃棄時にサブスクライブを解除します。
問題は、スタック ナビゲーターのセットアップなどで複数の画面がConnectivityStatus
ウィジェットを使用する場合、どちらのインスタンスも破棄されていないため、2 つの同時サブスクリプションが発生することです。これにより、多くの冗長で不要なリクエストが発生します。
私が本当に望んでいるのは、ウィジェットの単一のインスタンスを複数の画面で共有するか、複数のインスタンスがアクセスできる 1 つのグローバル状態にすることです。
どうすればこれを達成できますか、または私の問題に対する他の推奨される解決策は何ですか?
flutter - ビジネス ロジックと UI ロジックの違いは何ですか?
私は状態管理を学んでいますが、ほとんどの場合言葉にflutter
出くわし、インターネットでさまざまな言語で説明されているので検索しましたが、よく理解できませんでした。例の形で、それを非常にきれいで簡単に説明しますか?business logic
ui logic
presentation logic
logic
flutter - ステートフル ウィジェットのプロバイダ - パラメータ タイプの問題
RedditのDRAWプラグインに関連するすべてのアイテムメソッドを配置するクラスRedditAPIServiceがあります。
ステートレス ウィジェットでクラスのオブジェクトを作成しました。(クラス _RedditAuthState の下で State 部分を拡張)
RedditAPIService reddit = RedditAPIService();
この reddit オブジェクトをダウンストリームの複数のウィジェットで使用できるようにする必要があるため、Provider を使用してオブジェクトを公開したいと考えました。
現在、次のエラーが発生しています。
「エラー: 引数の型 'Null Function(BuildContext)' をパラメーターの型 'Widget Function(BuildContext, Widget)' に割り当てることはできません。」
私は何を間違っていますか?
flutter - StatelessWidget にメンバー変数を含めることはできますか?
をStatelessWidget
使用しScopedModel
てデータを保存する があります。ウィジェットは基本的に、チェックボックスのリストと、チェックボックスの状態を保存するためのいくつかのボタンを表示します。
ここで、ユーザーがチェックボックスを変更したかどうか、つまり、ウィジェットが表示されてからチェック/チェックを外したかどうかを追跡したいと考えています。だから私はこのようなものを追加しました:
これは機能しているようですが、 my StatelessWidget
now には独自の状態が含まれています。
状態は、UI の更新や再描画には使用されません。「閉じる」ボタンを押したときにチェックボックスに変更があるかどうかを確認するためにのみ使用されます。
StatelessWidget
がこの種の内部状態を持つことは安全ですか? それとも問題になる可能性がありますか?たとえば、ウィジェットが予期せず再作成され、内部状態が失われる可能性はありますか?
ドキュメントがこれについて非常に明確であるとは思いません。
たとえば、内部クロック駆動の状態を持っているため、または一部のシステム状態に応じて、動的に変更できるコンポジションの場合は、StatefulWidget の使用を検討してください。
しかし、これは UI に影響を与え、ウィジェットの再構築が必要な状態にのみ適用されるように思えます。
flutter - 特定のユースケースでフラッターの異なるページで同じ状態を維持する
フラッターでの状態管理に関する特定の質問があることは知っていますが、それらのどれも私のユースケースを解決していないようです。
最近、私は電子商取引に基づくアプリを構築していて、状態管理のこの真の必要性に遭遇しました。2ページありましたが、
- 1 つは製品ページで、製品をカートに追加します。
- 2 つ目はカート ページで、最近カートに追加された商品が表示されます。
ユーザーは商品をカートに追加してから、カートに移動できます。カートページでは、商品の数量を増減することもできます。
ご覧のとおり、最初は黄色のアイテムが数量 3 でカートに追加されましたが、カート ページで、ユーザーが (-) ボタンを押して数量を 1 に減らしました。ユーザーが [戻る] ボタンを押すと、次の状態になります。黄色の製品は、製品ページでは 3 のままです。ピンクの商品も同様の状況です。
したがって、通常の setState といくつかのグローバル データ構造を使用してこれを解決し、数量を追跡しようとしました。しかし、私のアプリが大きくなるにつれて、ページ全体で状態を維持するのが本当に難しくなりました。Redux、BloC パターン、プロバイダーなどのさまざまな状態管理ソリューションについて読んだことがありますが、ユースケースでそれらを使用する方法が明確ではありません。経験のある方、岩を砕いて消化を手伝っていただけますか?
これを解決する方法についてのサンプル コードと説明をいただければ幸いです。
私の問題が明確であることを願っています!
flutter - Flutter の InitState の何が問題になっていますか?
flutter と firebase で autologin を実行して initState に入れようとしていますが、Build Widget に移動しようとしたため実行されなかったようですが、何も機能せず、LoginPageState 内に配置すると実行されましたが、エラーが発生しました: ナビゲーターを含まないコンテキストで要求されたナビゲーター操作。 私のコード:
flutter - Flutter Navigator 2.0 で route.didPop(result) が false に等しいのはいつですか
Flutter Navigator 2.0 の主なメカニズムの 1 つは、RouterDelegate > build > Navigator 内の関数 onPopPage です。ただし、route.didPop(result) が false を返すタイミングがわかりません。
ジョン・ライアンの有名な例を使用して、私の質問を示します。彼のデモコード。
すべてのテストで、AppBar の自動生成された戻るボタンを使用すると、route.didPop(result) は true を返します。
ドキュメントはそのままです:
しかし、「ルートが内部的にそれを処理できる場合 (たとえば、内部状態の独自のスタックがあるため)、false を返す」という意味ですか? ルートには内部状態の独自のスタックがありますか? この結果を生成する方法は?
ありがとう、ご安全に
flutter - ドロワーから setState を呼び出しますか?
環境
標準のフラッター デモを使用して、ドロワーを追加しました。引き出しの内容を別のファイルの別のクラスに入れました。どちらもステートフル ウィジェットです。メイン画面に表示される数値のグローバル変数をインクリメントする setState を使用して、ドロワーでフローティング アクション ボタンを使用します。
何が起こるのですか
押しても何も起こりません。
メイン ページ/main.dart のフローティング アクション ボタンを使用するまで、メイン ページ/main.dart のテキストは更新されません。次に、ドロワーに追加したすべてのインクリメントも追加します。
したがって、ウィジェットを再構築するだけではありません。
ウィジェットを再構築するにはどうすればよいですか? 必要なのは、両方とも setstate 内にあることだけだと思いましたか?
私が思いついた最善の原因
ステートフル ウィジェット内でステートフル ウィジェットを使用しても、埋め込みウィジェットは技術的には main.dart で作成されたオブジェクトであるため、setstate は埋め込みステートフル ウィジェットでのみ機能するためですか?
main.dart のコード
引き出しのコード