Flutterでよく使われるデザインパターン[BLoC]

Flutter

BLoC(Business Logic Component)デザインパターンは、Flutterアプリケーションでよく使用されるデザインパターンの1つで、アプリケーションの状態を管理するためのパターンです。

具体的には、BLoCパターンでは、以下の3つの要素があります。

  1. Business Logic Component(BLoC) アプリケーションの状態を管理するコンポーネントで、データの取得や加工、変更を行います。状態を表すデータとそれを変更するためのメソッドが含まれています。
  2. Stream BLoCからビューに状態の変更を通知するために使用される非同期ストリームです。BLoCはStreamを使用してビューにデータを配信します。
  3. UI(User Interface) ビューのことで、ユーザーが操作する部分です。ビューは、BLoCから配信されたデータを表示します。

例えば、BLoCパターンを使用したTodoアプリケーションを考えてみましょう。このアプリケーションでは、Todoリストの追加、削除、更新などができます。

  1. Business Logic Component(BLoC): TodoアプリケーションのBLoCには、以下のメソッドが含まれています。
  • getTodos(): Todoリストを取得するためのメソッド。
  • addTodo(): Todoを追加するためのメソッド。
  • updateTodo(): Todoを更新するためのメソッド。
  • deleteTodo(): Todoを削除するためのメソッド。
  1. Stream: BLoCからビューに状態の変更を通知するために、Streamを使用します。例えば、Todoリストに変更があった場合、以下のようにStreamを使用してビューに通知します。
Stream<List<Todo>> get todoListStream => _todoListController.stream;
  1. UI: ビューでは、BLoCから配信されたデータを表示します。例えば、Todoリストを表示するウィジェットでは、以下のようにStreamBuilderを使用して、Streamからデータを受け取り、リスト表示します。
StreamBuilder<List<Todo>>(
  stream: _todoBloc.todoListStream,
  builder: (context, snapshot) {
    if (!snapshot.hasData) {
      return CircularProgressIndicator();
    }
    List<Todo> todoList = snapshot.data;
    return ListView.builder(
      itemCount: todoList.length,
      itemBuilder: (BuildContext context, int index) {
        return ListTile(
          title: Text(todoList[index].title),
          subtitle: Text(todoList[index].description),
        );
      },
    );
  },
)

BLoCパターンを使用することで、UIレイヤーとビジネスロジックレイヤーを分離することができ、アプリケーションの保守性やテスト性を向上させることができます。さらに、BLoCは、FlutterのStream APIを活用することができるため、非同期処理を簡単に扱うことができます。

コメント

タイトルとURLをコピーしました