-
-
Notifications
You must be signed in to change notification settings - Fork 47
/
chart_genders_bloc.dart
31 lines (24 loc) · 1013 Bytes
/
chart_genders_bloc.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import 'dart:math';
import 'package:bloc/bloc.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:shiori/domain/models/models.dart';
import 'package:shiori/domain/services/genshin_service.dart';
part 'chart_genders_bloc.freezed.dart';
part 'chart_genders_event.dart';
part 'chart_genders_state.dart';
class ChartGendersBloc extends Bloc<ChartGendersEvent, ChartGendersState> {
final GenshinService _genshinService;
ChartGendersBloc(this._genshinService) : super(const ChartGendersState.loading());
@override
Stream<ChartGendersState> mapEventToState(ChartGendersEvent event) async* {
final s = event.map(
init: (_) => _init(),
);
yield s;
}
ChartGendersState _init() {
final items = _genshinService.characters.getCharacterGendersForCharts();
final maxCount = max<int>(items.map((e) => e.femaleCount).reduce(max), items.map((e) => e.maleCount).reduce(max));
return ChartGendersState.loaded(genders: items, maxCount: maxCount);
}
}