column_bloc.dart 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import 'package:flowy_sdk/protobuf/flowy-grid-data-model/grid.pb.dart';
  2. import 'package:flutter_bloc/flutter_bloc.dart';
  3. import 'package:freezed_annotation/freezed_annotation.dart';
  4. import 'package:dartz/dartz.dart';
  5. import 'dart:async';
  6. import 'column_service.dart';
  7. import 'data.dart';
  8. part 'column_bloc.freezed.dart';
  9. class ColumnBloc extends Bloc<ColumnEvent, ColumnState> {
  10. final ColumnService service;
  11. final GridColumnData data;
  12. ColumnBloc({required this.data, required this.service}) : super(ColumnState.initial(data.fields)) {
  13. on<ColumnEvent>(
  14. (event, emit) async {
  15. await event.map(
  16. initial: (_InitialColumn value) async {},
  17. createColumn: (_CreateColumn value) {},
  18. );
  19. },
  20. );
  21. }
  22. @override
  23. Future<void> close() async {
  24. return super.close();
  25. }
  26. }
  27. @freezed
  28. abstract class ColumnEvent with _$ColumnEvent {
  29. const factory ColumnEvent.initial() = _InitialColumn;
  30. const factory ColumnEvent.createColumn() = _CreateColumn;
  31. }
  32. @freezed
  33. abstract class ColumnState with _$ColumnState {
  34. const factory ColumnState({required List<Field> fields}) = _ColumnState;
  35. factory ColumnState.initial(List<Field> fields) => ColumnState(fields: fields);
  36. }