cardFiltroGeral method

Widget cardFiltroGeral({
  1. required BuildContext context,
  2. required FiltrosWidgetModel filtrosDados,
  3. required void onTap()?,
  4. required FiltroController controller,
  5. required int indexFiltro,
})

Implementation

Widget cardFiltroGeral({required BuildContext context, required FiltrosWidgetModel filtrosDados, required void Function()? onTap, required FiltroController controller, required int indexFiltro}) {
  return Card(
    child: ListTile(
      onTap: onTap,
      trailing: const Icon(Icons.arrow_forward_ios_rounded),
      title: tituloCards(titulo: filtrosDados.titulo.toUpperCase(), context: context),
      subtitle: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        mainAxisAlignment: MainAxisAlignment.start,
        children: [
          Row(
            children: [
              Observer(
                builder: (_) => Visibility(
                  visible: filtrosDados.tipoWidget == "checkboxrca",
                  child: Expanded(
                    child: CheckboxListTile(
                      splashRadius: 15,
                      contentPadding: EdgeInsets.zero,
                      title: const Text(
                        "EXIBIR RCA SEM VENDAS",
                        style: TextStyle(
                          fontSize: 11,
                          fontWeight: FontWeight.w600,
                        ),
                      ),
                      controlAffinity: ListTileControlAffinity.leading,
                      value: controller.isRCAsemVenda,
                      onChanged: (s) {
                        controller.isRCAsemVenda = !controller.isRCAsemVenda;
                        controller.validarCondicaoDebuscaRCA();
                      },
                    ),
                  ),
                ),
              ),
              Observer(
                builder: (_) => Visibility(
                  visible: filtrosDados.tipoWidget == "checkboxrca",
                  child: Expanded(
                    child: CheckboxListTile(
                      contentPadding: EdgeInsets.zero,
                      title: const Text(
                        "SOMENTE ATIVOS",
                        style: TextStyle(
                          fontSize: 11,
                          fontWeight: FontWeight.w600,
                        ),
                      ),
                      controlAffinity: ListTileControlAffinity.leading,
                      value: controller.isRCAativo,
                      onChanged: (s) {
                        controller.isRCAativo = !controller.isRCAativo;
                        controller.validarCondicaoDebuscaRCA();
                      },
                    ),
                  ),
                ),
              ),
            ],
          ),
          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.all(10.0),
            child: Stack(
              alignment: Alignment.centerLeft,
              children: [
                Observer(
                  builder: (_) => Wrap(
                    spacing: 2.0,
                    direction: Axis.horizontal,
                    children: [
                      Observer(
                        builder: (_) => Visibility(
                          visible: controller.listaFiltrosParaConstruirTela[indexFiltro].filtrosWidgetModel.itensSelecionados!.isEmpty,
                          child: Container(
                            decoration: BoxDecoration(
                              borderRadius: BorderRadius.circular(10.0),
                              color: Colors.grey[300],
                            ),
                            margin: const EdgeInsets.fromLTRB(1, 0, 0, 2),
                            padding: const EdgeInsets.fromLTRB(10, 2, 12, 2),
                            child: const Text(
                              "\u{2718} Sem filtro",
                              style: TextStyle(
                                fontWeight: FontWeight.w500,
                                fontSize: 11,
                                color: Colors.blueGrey,
                              ),
                            ),
                          ),
                        ),
                      ),
                      for (FiltrosModel valores in controller.listaFiltrosParaConstruirTela[indexFiltro].filtrosWidgetModel.itensSelecionados!.take(20))
                        Observer(builder: (context) {
                          return Visibility(
                            visible: valores.selecionado,
                            child: Container(
                              decoration: BoxDecoration(
                                borderRadius: BorderRadius.circular(10.0),
                                color: Colors.grey[300],
                              ),
                              margin: const EdgeInsets.fromLTRB(1, 0, 0, 2),
                              padding: const EdgeInsets.fromLTRB(10, 2, 12, 2),
                              child: Text(
                                "\u{2705} ${valores.codigo}",
                                style: const TextStyle(
                                  fontWeight: FontWeight.w500,
                                  fontSize: 14,
                                  color: Colors.blueGrey,
                                ),
                              ),
                            ),
                          );
                        }),
                    ],
                  ),
                ),
              ],
            ),
          ),
        ],
      ),
    ),
  );
}