フラッター。BLoCをアップグレードする方法

BLoCパターンを実装するライブラリはたくさんあります。しかし、これから説明するのは珍しいもので、isolate_blocと呼ばれます。



名前が示すように、これはある種の異常なブロックであり、その特徴は、別の分離(以下、分離)で機能し、UIの速度を低下させないことです。



通常のブロックの問題は何ですか?



ボイラープレートに加えて、もう1つの問題があります。メインスレッドで機能するため、jsonの解析などの重いタスクにより、UIがフリーズする可能性があります。



simple_blocやcubitのようなライブラリは、最初の問題に役立ちます。2番目から-分離、またはそのラッパー-計算。原則として、これは多くの人が使用する本当に良い組み合わせですが、それでもすべての問題を解決するわけではありません。たとえば、MethodChannelを単独で使用することはできません。原則として、その使用は不便とボイラープレートに関連しています。



ブロックを分離する







このライブラリは、BLoCパターンの使用に役立ち、分離やメッセージチャネルの操作など、多くのタスクを解決します。さらに、ブロック自体を作成するときのコードの量を減らすことができます。



それを使用する方法?



このライブラリの操作方法を理解するために、簡単な例を見てみましょう。



さらに詳しく説明しようとしたのですが、なにか理解できないことがあるので、すでにBLoCパターンに精通していると思います。



フラッタープロジェクトはカウンターから始まるので、それから始めます。最初のステップは、ブロック自体を書き込むことです。







3行目では、IsolateBlocクラスから継承するCounterBlocクラスを作成します。ここでは、イベントのタイプとブロックの状態を示します。



4行目では、カウンターの初期状態



-0を渡します。6行目から9行目まで、新しいイベントが受信されたときに呼び出されるonEventReceivedメソッドをオーバーライドします。 Stateは、ブロックがUIに送信した最後の状態を返すゲッターです。



8行目では、状態を取得してUIに送信するemit関数を使用しています。



次に、ブロックを登録する必要があります。



別の分離で機能するため、直接作成することはできません。したがって、レジスタ関数を使用して、ライブラリにその存在を通知する必要があります。







5行目では、ライブラリを初期化し、分離ブロックと登録ブロックで実行される関数を渡します。



10行目で、CounterBlocを登録します。これで、ライブラリは要求に応じてCounterBlocを作成できるようになります。



UIを説明するだけです!







8行目で、ブロックを作成してウィジェットツリーに追加します。



23行目では、ブロックの状態をリッスンします。 IsolateBlocBuilderはStreamBuilderと同様に機能しますが、ウィジェットツリー自体でブロックを見つけることができます。



31行目から33行目では、拡張メソッドisolateBloc <Bloc、State>()を使用してコンテキストからブロックを取得し、add()関数を使用して新しいイベントを追加します。



以上で、開始できます。



最終



基本的な例を使用して、このライブラリの操作方法を示しました。さらに詳しく調べるには、githubのページを参照することをお勧めしますすべての機能がそこで説明されており、より複雑な例があります。



All Articles