Created
October 27, 2020 15:55
-
-
Save paramadharmika/4e3d32fe2885ff17bd81c0b09d3fee2a to your computer and use it in GitHub Desktop.
breed selection bloc
This file contains hidden or 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
import 'package:agora/definitions/type_animal.enum.dart'; | |
import 'package:agora/models/agora_breed.model.dart'; | |
import 'package:flutter/material.dart'; | |
import 'package:rxdart/rxdart.dart'; | |
import 'breed.bloc.dart'; | |
class BreedSelectionBloc { | |
BreedSelectionBloc({ | |
this.animal, | |
AgoraBreed breed, | |
}) { | |
_breedBloc = BreedBloc(animal: animal); | |
_breedBloc.breeds.first.then((value) { | |
_breeds = value; | |
_filteredBreeds.value = value; | |
}); | |
_breedSelected.value = breed; | |
} | |
BreedBloc _breedBloc; | |
List<AgoraBreed> _breeds; | |
BehaviorSubject<List<AgoraBreed>> _filteredBreeds = BehaviorSubject<List<AgoraBreed>>.seeded([]); | |
BehaviorSubject<AgoraBreed> _breedSelected = BehaviorSubject<AgoraBreed>(); | |
final TypeAnimal animal; | |
TextEditingController searchController = TextEditingController(); | |
get filteredBreeds => _filteredBreeds; | |
get breedSelected => _breedSelected; | |
set breedSelected(AgoraBreed val) => _breedSelected.value = val; | |
void onBreedSearched(String keyword) { | |
final filters = _breeds.where( | |
(breed) => breed.name.toLowerCase().startsWith(keyword.toLowerCase())); | |
_filteredBreeds.value = filters.toList(); | |
} | |
bool isSelectedBreed(AgoraBreed breed) => _breedSelected.value != null | |
? _breedSelected.value.id == breed.id | |
: false; | |
void dispose() { | |
_breedSelected.close(); | |
_filteredBreeds.close(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment