Line data Source code
1 : import 'package:flutter_bloc/flutter_bloc.dart'; 2 : import 'package:flutter_bloc_patterns/base_list.dart'; 3 : import 'package:flutter_bloc_patterns/src/list/base/list_repository.dart'; 4 : import 'package:flutter_bloc_patterns/src/list/filter/filter_list_bloc.dart'; 5 : import 'package:flutter_bloc_patterns/src/list/filter/filter_list_repository.dart'; 6 : 7 : /// A basic list BLoC with no filtering or pagination. Thus it should be used 8 : /// with a reasonable small amount of data. 9 : /// 10 : /// Designed to collaborate with [BlocBuilder] and [ViewStateBuilder] for 11 : /// displaying data. 12 : /// 13 : /// Call [loadElements] to perform initial data fetch. 14 : /// Call [refreshElements] to perform a refresh. 15 : /// 16 : /// [T] - type of list items. 17 : class ListBloc<T> extends FilterListBloc<T, Null> { 18 1 : ListBloc(Repository<T> repository) 19 0 : : assert(repository != null), 20 2 : super(_FilterRepositoryAdapter(repository)); 21 : } 22 : 23 : class _FilterRepositoryAdapter<T> extends FilterRepository<T, Null> { 24 : final Repository<T> repository; 25 : 26 1 : _FilterRepositoryAdapter(this.repository); 27 : 28 1 : @override 29 2 : Future<List<T>> getAll() => repository.getAll(); 30 : 31 0 : @override 32 0 : Future<List<T>> getBy(Null filter) => repository.getAll(); 33 : }