Skip to content

Instantly share code, notes, and snippets.

@paramadharmika
Created October 27, 2020 15:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paramadharmika/4e3d32fe2885ff17bd81c0b09d3fee2a to your computer and use it in GitHub Desktop.
Save paramadharmika/4e3d32fe2885ff17bd81c0b09d3fee2a to your computer and use it in GitHub Desktop.
breed selection bloc
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