cardFiltroDropDown method

Widget cardFiltroDropDown({
  1. required BuildContext context,
  2. required FiltrosWidgetModel filtrosDados,
  3. required FiltroController controller,
  4. required int index,
})

Implementation

Widget cardFiltroDropDown({
  required BuildContext context,
  required FiltrosWidgetModel filtrosDados,
  required FiltroController controller,
  required int index,
}) {
  return Card(
    child: ListTile(
      title: tituloCards(titulo: filtrosDados.titulo.toUpperCase(), context: context),
      subtitle: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        mainAxisAlignment: MainAxisAlignment.start,
        children: [
          Visibility(
            visible: filtrosDados.subtitulo.isNotEmpty,
            child: Container(
              margin: const EdgeInsets.only(top: 5, bottom: 5),
              alignment: Alignment.topLeft,
              child: Text(
                filtrosDados.subtitulo,
                style: const TextStyle(
                  fontSize: 11.0,
                ),
              ),
            ),
          ),
          Padding(
            padding: const EdgeInsets.only(top: 10, bottom: 10),
            child: FutureBuilder(
              future:
              controller.listaFiltrosCarregados.indexWhere((element) => element.indexFiltros == index) == -1 ?
              controller.funcaoBuscarDadosDeCadaFiltro(
                valor: controller.listaFiltrosParaConstruirTela[index].filtrosWidgetModel,
                isBuscarDropDown: true,
                index: index,
              ).then(
                (value) {
                  controller.listaFiltrosCarregados[controller.listaFiltrosCarregados.indexWhere((element) => element.indexFiltros == index)].valorSelecionadoParaDropDown = controller.listaFiltrosCarregados[controller.listaFiltrosCarregados.indexWhere((element) => element.indexFiltros == index)].listaFiltros.first;
                },
              ) : null,
              builder: (context, snapshot) {
                if (controller.listaFiltrosCarregados.where((element) => element.indexFiltros == index).toList().isNotEmpty) {
                  return DropdownButton<FiltrosModel>(
                    value: controller.listaFiltrosCarregados[controller.listaFiltrosCarregados.indexWhere((element) => element.indexFiltros == index)].valorSelecionadoParaDropDown,
                    isExpanded: true,
                    isDense: true,
                    onChanged: (value) {
                      controller.listaFiltrosCarregados[controller.listaFiltrosCarregados.indexWhere((element) => element.indexFiltros == index)].valorSelecionadoParaDropDown = value;
                      controller.adicionarItensDropDown(index: index, valorSelecionado: value!);

                    },
                    hint: Text(controller.listaFiltrosCarregados[controller.listaFiltrosCarregados.indexWhere((element) => element.indexFiltros == index)].valorSelecionadoParaDropDown!.titulo),
                    items: controller.listaFiltrosCarregados[controller.listaFiltrosCarregados.indexWhere((element) => element.indexFiltros == index)].listaFiltros.map((item) {
                      return DropdownMenuItem<FiltrosModel>(
                        value: item,
                        child: Text(
                          item.titulo,
                        ),
                      );
                    }).toList(),
                  );
                } else {
                  return InkWell(
                    child: Container(
                      height: 25,
                      width: MediaQuery.sizeOf(context).width,
                      decoration: const BoxDecoration(border: Border(bottom: BorderSide(width: 0.25))),
                      child: const Row(
                        children: [
                          Expanded(
                            child: Text("NENHUM"),
                          ),
                          Icon(Icons.arrow_drop_down_sharp),
                        ],
                      ),
                    ),
                    onTap: () async {
                      await controller.funcaoBuscarDadosDeCadaFiltro(
                        valor: controller.listaFiltrosParaConstruirTela[index].filtrosWidgetModel,
                        isBuscarDropDown: true,
                        index: index,
                      );
                      controller.listaFiltrosCarregados[controller.listaFiltrosCarregados.indexWhere((element) => element.indexFiltros == index)].valorSelecionadoParaDropDown = controller.listaFiltrosCarregados[controller.listaFiltrosCarregados.indexWhere((element) => element.indexFiltros == index)].listaFiltros[0];
                    },
                  );
                }
              },
            ),
          ),
        ],
      ),
    ),
  );
}