Problemas com a lib flutter_bloc
23/09/2021
0
Boa tarde pessoal, estou trabalhando com uma Bloc e preciso criar um filtro de produto, criei tudo conforme esperado mas na hora de carregar ele não da o setState para tela.
codigo do bloc:
// class FiltersBloc extends Bloc<FiltersEvent, FiltersState> {
// FiltersBloc() : super(initialState);
// FiltersTeste filters = FiltersTeste();
// List<String> selects = [];
// List<String> testeList=[];
// @override
// Stream<FiltersState> mapEventToState(FiltersEvent event) async* {
// if (event is FetchFiltersEvent) {
// await loadFilters();
// yield FiltersStateLoaded(
// filterAreasOfExpertise: filters.filterAreasOfExpertise,
// filterCategorys: testeList,
// selectFilters: selects);
// } else if (event is SelectFiltersEvent) {
// checkboxFilters(event.element);
// yield FiltersStateLoaded(
// filterAreasOfExpertise: filters.filterAreasOfExpertise,
// filterCategorys: testeList,
// selectFilters: selects);
// } else if (event is SelectFiltersClear) {
// clearFilters();
// yield FiltersStateLoaded(
// filterAreasOfExpertise: filters.filterAreasOfExpertise,
// filterCategorys: testeList,
// selectFilters: selects);
// }
// print("selecionados ${filters.selectFilters}");
// }
// Future loadFilters() async {
// Map<String, dynamic> filtersApi = await Future.delayed(
// Duration(seconds: 3),
// () => {
// "categories": [
// "Texto 1",
// "texto 2",
// "Texto 3",
// "Texto 4",
// "Texto 5",
// "Texto 6",
// ],
// "AreasOfExpertise": [
// "Empreiteiras",
// "Florestal",
// "Metal e Mecânica",
// "Mineração",
// ],
// },
// );
// testeList= filtersApi['AreasOfExpertise'];
// filters = FiltersTeste(
// filterCategorys: filtersApi['categories'],
// filterAreasOfExpertise: testeList,
// selectFilters: selects);
// }
// Future checkboxFilters(String element) async {
// if (!filters.selectFilters.contains(element)) {
// selects.add(element);
// } else {
// selects.remove(element);
// }
// filters.selectFilters = selects;
// }
// clearFilters() {
// filters.selectFilters.clear();
// }
// }
// class FiltersTeste extends FiltersState {
// final List<String> filterCategorys;
// final List<String> filterAreasOfExpertise;
// List<String> selectFilters;
// List<Object> get props =>
// [filterCategorys, filterAreasOfExpertise, selectFilters];
// FiltersTeste(
// {this.selectFilters, this.filterCategorys, this.filterAreasOfExpertise});
// }
codigo dos eventos :
class FiltersEvent{
}
class FetchFiltersEvent extends FiltersEvent{
}
class SelectFiltersClear extends FiltersEvent{
}
class SelectFiltersEvent extends FiltersEvent{
final String element;
SelectFiltersEvent({this.element});
}
codigo dos states :
class FilterStateLoading extends FiltersState{
}
class FiltersStateLoaded extends FiltersState {
final List<String> filterCategorys;
final List<String> filterAreasOfExpertise;
final List<String> selectFilters;
List<Object> get props => [filterCategorys,filterAreasOfExpertise,selectFilters];
FiltersStateLoaded({ this.selectFilters, this.filterCategorys,this.filterAreasOfExpertise});
}
class FiltersStateTeste extends FiltersState {
final List<String> filterCategorys;
final List<String> filterAreasOfExpertise;
final List<String> selectFilters;
//List<Object> get props => [filterCategorys,filterAreasOfExpertise,selectFilters];
FiltersStateTeste({ this.selectFilters, this.filterCategorys,this.filterAreasOfExpertise});
}
class FilterChangingState extends FiltersState {
final List<String> selectFilters;
FilterChangingState({ this.selectFilters});
}
Codigo da view
// BlocBuilder<FiltersBloc, FiltersState>(
// bloc: _bloc,
// builder: (context, state) {
// // if (state is FiltersStateLoaded) {
// // print('print aqui');
// // return Container(
// // child: Column(
// // children: [
// // Container(
// // color: Colors.white,
// // height: constraints.maxHeight * .73,
// // child: SingleChildScrollView(
// // child: Column(children: [
// // Container(
// // child: Column(
// // children: [
// // state.selectFilters.isEmpty
// // ? Container()
// // : Container(
// // padding: EdgeInsets.only(
// // left: 16, top: 16),
// // child: Column(
// // children: [
// // Container(
// // child: Container(
// // height: 32,
// // child:
// // ListView.builder(
// // scrollDirection:
// // Axis
// // .horizontal,
// // itemCount: state
// // .selectFilters
// // .length,
// // itemBuilder:
// // (context,
// // index) {
// // return SyxTags(
// // type: SyxTypeTags
// // .filters,
// // text: state
// // .selectFilters[
// // index],
// // ontap:
// // () {},
// // );
// // }),
// // ),
// // ),
// // Padding(
// // padding:
// // EdgeInsets.only(
// // top: 8,
// // bottom: 22),
// // child: TextButton(
// // onPressed: () {
// // _bloc.a
codigo do bloc:
// class FiltersBloc extends Bloc<FiltersEvent, FiltersState> {
// FiltersBloc() : super(initialState);
// FiltersTeste filters = FiltersTeste();
// List<String> selects = [];
// List<String> testeList=[];
// @override
// Stream<FiltersState> mapEventToState(FiltersEvent event) async* {
// if (event is FetchFiltersEvent) {
// await loadFilters();
// yield FiltersStateLoaded(
// filterAreasOfExpertise: filters.filterAreasOfExpertise,
// filterCategorys: testeList,
// selectFilters: selects);
// } else if (event is SelectFiltersEvent) {
// checkboxFilters(event.element);
// yield FiltersStateLoaded(
// filterAreasOfExpertise: filters.filterAreasOfExpertise,
// filterCategorys: testeList,
// selectFilters: selects);
// } else if (event is SelectFiltersClear) {
// clearFilters();
// yield FiltersStateLoaded(
// filterAreasOfExpertise: filters.filterAreasOfExpertise,
// filterCategorys: testeList,
// selectFilters: selects);
// }
// print("selecionados ${filters.selectFilters}");
// }
// Future loadFilters() async {
// Map<String, dynamic> filtersApi = await Future.delayed(
// Duration(seconds: 3),
// () => {
// "categories": [
// "Texto 1",
// "texto 2",
// "Texto 3",
// "Texto 4",
// "Texto 5",
// "Texto 6",
// ],
// "AreasOfExpertise": [
// "Empreiteiras",
// "Florestal",
// "Metal e Mecânica",
// "Mineração",
// ],
// },
// );
// testeList= filtersApi['AreasOfExpertise'];
// filters = FiltersTeste(
// filterCategorys: filtersApi['categories'],
// filterAreasOfExpertise: testeList,
// selectFilters: selects);
// }
// Future checkboxFilters(String element) async {
// if (!filters.selectFilters.contains(element)) {
// selects.add(element);
// } else {
// selects.remove(element);
// }
// filters.selectFilters = selects;
// }
// clearFilters() {
// filters.selectFilters.clear();
// }
// }
// class FiltersTeste extends FiltersState {
// final List<String> filterCategorys;
// final List<String> filterAreasOfExpertise;
// List<String> selectFilters;
// List<Object> get props =>
// [filterCategorys, filterAreasOfExpertise, selectFilters];
// FiltersTeste(
// {this.selectFilters, this.filterCategorys, this.filterAreasOfExpertise});
// }
codigo dos eventos :
class FiltersEvent{
}
class FetchFiltersEvent extends FiltersEvent{
}
class SelectFiltersClear extends FiltersEvent{
}
class SelectFiltersEvent extends FiltersEvent{
final String element;
SelectFiltersEvent({this.element});
}
codigo dos states :
class FilterStateLoading extends FiltersState{
}
class FiltersStateLoaded extends FiltersState {
final List<String> filterCategorys;
final List<String> filterAreasOfExpertise;
final List<String> selectFilters;
List<Object> get props => [filterCategorys,filterAreasOfExpertise,selectFilters];
FiltersStateLoaded({ this.selectFilters, this.filterCategorys,this.filterAreasOfExpertise});
}
class FiltersStateTeste extends FiltersState {
final List<String> filterCategorys;
final List<String> filterAreasOfExpertise;
final List<String> selectFilters;
//List<Object> get props => [filterCategorys,filterAreasOfExpertise,selectFilters];
FiltersStateTeste({ this.selectFilters, this.filterCategorys,this.filterAreasOfExpertise});
}
class FilterChangingState extends FiltersState {
final List<String> selectFilters;
FilterChangingState({ this.selectFilters});
}
Codigo da view
// BlocBuilder<FiltersBloc, FiltersState>(
// bloc: _bloc,
// builder: (context, state) {
// // if (state is FiltersStateLoaded) {
// // print('print aqui');
// // return Container(
// // child: Column(
// // children: [
// // Container(
// // color: Colors.white,
// // height: constraints.maxHeight * .73,
// // child: SingleChildScrollView(
// // child: Column(children: [
// // Container(
// // child: Column(
// // children: [
// // state.selectFilters.isEmpty
// // ? Container()
// // : Container(
// // padding: EdgeInsets.only(
// // left: 16, top: 16),
// // child: Column(
// // children: [
// // Container(
// // child: Container(
// // height: 32,
// // child:
// // ListView.builder(
// // scrollDirection:
// // Axis
// // .horizontal,
// // itemCount: state
// // .selectFilters
// // .length,
// // itemBuilder:
// // (context,
// // index) {
// // return SyxTags(
// // type: SyxTypeTags
// // .filters,
// // text: state
// // .selectFilters[
// // index],
// // ontap:
// // () {},
// // );
// // }),
// // ),
// // ),
// // Padding(
// // padding:
// // EdgeInsets.only(
// // top: 8,
// // bottom: 22),
// // child: TextButton(
// // onPressed: () {
// // _bloc.a
Eduardo
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)