Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Application] Added a bloc that will be used on the gender chart
- Loading branch information
Showing
7 changed files
with
99 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
28 changes: 28 additions & 0 deletions
28
lib/application/characters_per_region_gender/characters_per_region_gender_bloc.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
import 'package:bloc/bloc.dart'; | ||
import 'package:freezed_annotation/freezed_annotation.dart'; | ||
import 'package:shiori/domain/enums/enums.dart'; | ||
import 'package:shiori/domain/models/models.dart'; | ||
import 'package:shiori/domain/services/genshin_service.dart'; | ||
|
||
part 'characters_per_region_gender_bloc.freezed.dart'; | ||
part 'characters_per_region_gender_event.dart'; | ||
part 'characters_per_region_gender_state.dart'; | ||
|
||
class CharactersPerRegionGenderBloc extends Bloc<CharactersPerRegionGenderEvent, CharactersPerRegionGenderState> { | ||
final GenshinService _genshinService; | ||
|
||
CharactersPerRegionGenderBloc(this._genshinService) : super(const CharactersPerRegionGenderState.loading()); | ||
|
||
@override | ||
Stream<CharactersPerRegionGenderState> mapEventToState(CharactersPerRegionGenderEvent event) async* { | ||
final s = event.map( | ||
init: (e) => _init(e.regionType, e.onlyFemales), | ||
); | ||
yield s; | ||
} | ||
|
||
CharactersPerRegionGenderState _init(RegionType regionType, bool onlyFemales) { | ||
final characters = _genshinService.getCharactersForItemsByRegionAndGender(regionType, onlyFemales); | ||
return CharactersPerRegionGenderState.loaded(regionType: regionType, onlyFemales: onlyFemales, items: characters); | ||
} | ||
} |
9 changes: 9 additions & 0 deletions
9
lib/application/characters_per_region_gender/characters_per_region_gender_event.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
part of 'characters_per_region_gender_bloc.dart'; | ||
|
||
@freezed | ||
class CharactersPerRegionGenderEvent with _$CharactersPerRegionGenderEvent { | ||
const factory CharactersPerRegionGenderEvent.init({ | ||
required RegionType regionType, | ||
required bool onlyFemales, | ||
}) = _Init; | ||
} |
12 changes: 12 additions & 0 deletions
12
lib/application/characters_per_region_gender/characters_per_region_gender_state.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
part of 'characters_per_region_gender_bloc.dart'; | ||
|
||
@freezed | ||
class CharactersPerRegionGenderState with _$CharactersPerRegionGenderState { | ||
const factory CharactersPerRegionGenderState.loading() = _LoadingState; | ||
|
||
const factory CharactersPerRegionGenderState.loaded({ | ||
required RegionType regionType, | ||
required bool onlyFemales, | ||
required List<ItemCommonWithName> items, | ||
}) = _LoadedState; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,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.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); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
part of 'chart_genders_bloc.dart'; | ||
|
||
@freezed | ||
class ChartGendersEvent with _$ChartGendersEvent { | ||
const factory ChartGendersEvent.init() = _Init; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
part of 'chart_genders_bloc.dart'; | ||
|
||
@freezed | ||
class ChartGendersState with _$ChartGendersState { | ||
const factory ChartGendersState.loading() = _LoadingState; | ||
|
||
const factory ChartGendersState.loaded({ | ||
required int maxCount, | ||
required List<ChartGenderModel> genders, | ||
}) = _LoadedState; | ||
} |