問題タブ [bloc]
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 - 1つのストリームのみにのみ適用されるCombineLatestに似た機能はありますか?
私は Rxdart の初心者で、2 種類のストリームに対して Combinelatest2 を試しました。たとえば、次のようになります。
私のvalidateEmailとvalidatePasswordで:
これは私のホームページ画面のボタンです:
Combinelatest2 を使用すると、observable から 2 種類のエミッションの変更を取得でき、ボタンのオン/オフを切り替えることができますが、電子メールのみを監視したい場合は、どうすればよいですか? 電子メールからのエミッターが正しい場合、送信のボタンがオンになっている、またはその逆
flutter - inheritFromWidgetOfExactType がジェネリック InheritedWidget で機能しない
ウィジェットがジェネリックの子であり、それ自体がジェネリックであるかどうかinheritFromWidgetOfExactType
をメソッドが見つけられないようです。InheritedWidget
StatefulWidget
ブロックパターンを実装するために InheritedWidget を使用しています。BlocProvider の初期実装は次のようになります。
直接使用すると問題なく動作します:
しかし、ウィジェットツリーが再構築されるたびにブロックの状態が再構築されないように、ブロックプロバイダーを StatefulWidget でラップしたいと思います。
ここで、 InheritedWidget の代わりにこのパターンを使用しようとすると、次のようにinheritFromWidgetOfExactType
返されます。null
この問題を克服する方法はありますか? このアプローチを使用してブロックプロバイダーをネストできるようにしたいことに注意してください。
flutter - 発行されたすべての値のリストを返す他のストリームの新しいストリームを作成するにはどうすればよいですか (ブロック パターン)。
次のような 3 つのストリームがあります。
それらをすべてマージして、必要なときに発行されたすべての値を取得できるようにします。
事は..私はブロックパターンを使用していますが、initState()関数を持っていないので、初期化できません..だからダーツは同じファイルでこのようなことをさせません:
私は多くのことを試しましたが、エラーメッセージが表示され続けます:静的メンバーのみが初期化可能です..またはそのようなもの..リアクティブプログラミングとブロックパターンを使用してこれを進めるにはどうすればよいですか? 必要なウィジェットをリッスンすると、別のウィジェットの情報が失われる可能性があります。rxjsの例を試しましたが、これはクラス定義のみであるため、ここでは機能しません。
flutter - ブロック ストリームが正しく更新されない
これは、ブロック アーキテクチャの「getter x が null で呼び出された」からの直接の続き です。 @nonybrightoによって解決されました
現在の問題は、アプリケーションからエラーが発生しなくなったにもかかわらず、色が更新されず、青色のままであるため、ロジックがどこかで失敗していることです。私が呼び出す場合: colorBloc.changeColor(); 子 (ドロップダウンメニュー) 自体へのコールバックから、または親から直接、これらのウィジェット ボタンの色を実際には更新しません。それらは常に青です。
ボタン ウィジェットを実際に更新するには、何か追加する必要がありますか?
追加情報は必要ですか?
編集:親クラスと子クラス、およびブロックの使用方法。
dropdownmenu.dart
シングルプレイヤーダーツ
それが基本的に私がやろうとしている方法です。
http - Flutter メソッドが null で呼び出されました
フラッターを学習しており、ログイン画面を実装しようとしています。私はこの記事に従っており、API 呼び出し用に Dio を追加しています。問題は、[ログイン] ボタンをクリックすると、「NoSuchMethod: メソッド 'authenticate' が null で呼び出されました」というエラーが表示されることです。
これが私がやったことです。
UserRepository.dart
そして ApiProvider.dart にはこれがあります。
ご協力いただきありがとうございます。
firebase - 取得エラー: 引数タイプ 'Product' をパラメータ タイプ 'Map に割り当てることはできません
新しいデータを追加しようとしていますが、エラーが発生します:
The argument type 'Product' can't be assigned to the parameter type 'Map<String, dynamic>
これが私がやろうとしていることです: 私は単に2つTextField
のsを持つフォームを持っています データでマップを宣言しました
その後、ブロックを使用してモデルコンストラクターでデータを渡しますProduct
ブロックでは、次のようにプロバイダーに渡します。
そして、ここに来ます:
私は collection_reference を使用しており、マップを使用しているため、次のように構築された引数モデル Products を使用できません。
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 ビルダー関数が実行されていることがわかります。それは正常な動作ですか?
dart - Flutterでオブジェクトのリストのストリームを管理するには?
私は数日間フラッターに手を出しており、学習プロジェクトとして簡単な ToDo アプリを作ろうとしています。BLoC のようなものを実装しようとしています。ListItem ウィジェットのリストは、StreamBuilder にラップされた ListView.builder で作成されます。StreamController'<'List'<'Note'>'>' を実装しました。リストに新しい Note を追加するたびに、それを一時リストに追加し、StreamSink を介してリストを渡すことができました。ただし、アイテムが追加されるたびに ListView 全体が再構築されると思われます。
ストリームを個別に理解するために、少しずつ学習しようとしています。これを実装するより良い方法は何ですか? Stream のような単純な型の例しか見つけることができませんが、Lists のような複雑な型の例は見つかりません。
ListView に新しいエントリを追加する、より良いアプローチがあると確信しています。基本を学びたいだけなので、外部パッケージを使用しないようにしました。
dart - フラッターブロックの再構築/リスニング/再描画「トリガー」の問題
テクニックを使用して値を変更しようとしていますstate is XX
が、フラッターはストリームをリッスンしないか、再描画がトリガーされない可能性があります
私はそのメソッドを使用して適用できることを知っていますが、それがビルダーの戻り時に適用される場合、つまり Blocbuilder .. if (state is A) return , if (state is B) return ; そしてビルダーが戻ってきて、まったく新しいビルドになります。しかし、私は値を変更するだけでよく、ブロックパターンを介して変更したい. それは可能ですか?間違っているか、変更された値が変更された状態である必要があるかもしれません。つまり、これらのプロパティでブロックを書くことを意味します: ... extends
dart - FlutterでBloCをどのように構成する必要がありますか?
BloC と Flutter は初めてです。単一の単純な画面の場合、問題なく動作するはずです。しかし、私の場合を見てみましょう。BloC パターンの使用方法について混乱しています。
と呼ばれる単一の画面があり、これは画面のContainer
コンテナーです。その中に 5 ページあるとします。これらのページ数は動的です。ページはデータのみが異なります。PageView
Content
PageView
私はこれを実装する2つの方法について考えています:
1/ 1つの単一ブロックを使用して、5 人の子供に渡しContent
ます。
2/に1 つのブロックを使用し、Container
に別のブロックを使用しContent
ます。したがって、これはネストされたブロックのようです。のContainerBloc
リストが含まれていますContentBloc
。
1回目のアプローチ。私が見ている問題は、再レンダリングの問題です。各ページのデータのリストを作成します。
各ページは次の方法でデータをリッスンします。
データの更新方法は次のようになります。
私が理解しているように、1ページが更新されると。getData(index)
他のすべてのページは、によってトリガーされるストリームをリッスンするため、_allData.sink.add(allData);
再レンダリングされます。そのため、そのページのデータが変更されていなくても、すべてのページが再レンダリングされると思います。
2回目のアプローチ。そのようにネストされたブロックを持つことがベストプラクティスになるかどうかはわかりません。ContainerBloc
出力の一部をリッスンする必要がある場合がありContentBloc
ます。
私は今ちょっと混乱しています。
お時間をいただきありがとうございます。