Flutterは他のブロックからブロックの状態を聞きます 質問する

Flutterは他のブロックからブロックの状態を聞きます 質問する

こんにちは、私は他のブロックからブロックの状態を聞こうとしています。私はこのパッケージを使用していますhttps://pub.dev/packages/bloc

私からユーザーブロック聞きたいオーソブロックそしてそれが状態にあるとき認証認証済みユーザーブロックイベントを発生させる必要があります。

final UserRepository userRepository;
final authBloc;
StreamSubscription authSub;
UserBloc({ @required this.userRepository, @required this.authBloc}) {
    authSub = authBloc.listen((stateAuth) {

      //here is my problem because stateAuth, even is AuthenticationAuthenticated it return always false.
      if (stateAuth is AuthenticationAuthenticated) {
        this.add(GetUser())  ;
      }
    });
  }

@override
  Future<void> close() async {
    authSub?.cancel();
    super.close();
  }

今のところ、この問題があります: デバッグ中に stateAuth を印刷しようとすると、次の結果が返されます:

stateAuth = {AuthenticationAuthenticated} AuthenticationAuthenticated
   props = {_ImmutableList} size = 0

しかしstateAuth は AuthenticationAuthenticated です常に false を返します。

他の Bloc クラスから blocState をリッスンする方法はありますか?

ベストアンサー1

Sampir の質問にお答えすると、はい、その通りですが、別の方法で実行したい場合もあります。ブロックは、他の誰かのイベントを管理するものです。UI イベントを扱っている場合、ブロックは UI のイベントを管理しますが、他の種類のイベント (位置イベントや他のストリーム イベントなど) も扱っている場合は、UI イベントを管理するブロックと、他の種類のイベント (Bluetooth 接続など) を管理する別のブロックを持つことができます。したがって、最初のブロックは 2 番目のブロックをリッスンする必要があります (Bluetooth 接続の確立を待機しているため)。多数のセンサーを使用し、それぞれにデータのストリームがあるアプリについて考えてみると、連携する必要があるブロックのチェーンができます。マルチプロバイダーとマルチリスナーでこれを行うことはできますが、チェーンが非常に長くなり、リスナーケースの記述が困難になる可能性があります。また、UI から非表示にしたり、アプリの別の部分で再利用したりする必要があるため、ブロック内にチェーンを構築する必要があるかもしれません。

ブロックのほぼどこにでもリスナーを追加できます。StreamSubscription を使用すると、別のブロック内のストリームも含め、あらゆる種類のストリームにリスナーを追加できます。ブロックには、ストリームを公開してリッスンできるメソッドが必要です。

いくつかのコード (私は flutter_bloc を使用しています - flutter_bloc には複数のプロバイダーがありますが、これは単なる例です):

class BlocA extends Bloc<EventA, StateA> {

  final BlocB blocB;
  StreamSubscription subscription;

  BlocA({this.blocB}) {
    if (blocB == null) return;
    subscription = blocB.listen((stateB) {
      //here logic based on different children of StateB
    });
  }

  //...

}

class BlocB extends Bloc<EventB, StateB> {
   //here BlocB logic and activities
}

おすすめ記事