selecaoDePeriodoNomeado method

Widget selecaoDePeriodoNomeado({
  1. required FiltrosWidgetModel filtrosDados,
  2. required FiltroController controller,
  3. required BuildContext context,
  4. required String tipo,
})

Implementation

Widget selecaoDePeriodoNomeado({
  required FiltrosWidgetModel filtrosDados,
  required FiltroController controller,
  required BuildContext context,
  required String tipo,
}) {
  return Builder(
    builder: (context) {
      return Card(
        child: Padding(
          padding: const EdgeInsets.fromLTRB(10, 15, 10, 10),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            mainAxisAlignment: MainAxisAlignment.start,
            children: [
              tituloCards(
                titulo: filtrosDados.titulo.toUpperCase(),
                context: context,
              ),
              SizedBox(
                width: 250,
                child: Observer(
                  builder: (_) => CheckboxListTile(
                    value: controller.mapaDatasNomeadas[filtrosDados.tipoFiltro]["isEnable"],
                    title: const Text('Desabilitar data'),
                    controlAffinity: ListTileControlAffinity.leading,
                    onChanged: (c) {
                      controller.mapaDatasNomeadas.update(
                        filtrosDados.tipoFiltro, (value) {
                          return {
                            "dtinicio": value["dtinicio"],
                            "dtfim": value["dtfim"],
                            "isEnable": c
                          };
                        },);
                    },
                  ),
                ),
              ),
              ButtonBar(
                alignment: MainAxisAlignment.start,
                mainAxisSize: MainAxisSize.max,
                buttonPadding: const EdgeInsets.all(10),
                children: [
                  TextButton.icon(
                    icon: const Icon(Icons.calendar_today),
                    label: Observer(
                      builder: (_) => Text(
                        controller.mapaDatasNomeadas[filtrosDados.tipoFiltro]["dtinicio"],
                        style: const TextStyle(fontSize: 17),
                      ),
                    ),
                    onPressed: () async {
                      String data = await SettingsReports().selectDate(
                        context: context,
                      );
                      controller.mapaDatasNomeadas.update(
                        filtrosDados.tipoFiltro, (value) {
                          return {
                            "dtinicio": data,
                            "dtfim": value["dtfim"],
                            "isEnable": value["isEnable"]
                          };
                        },
                      );
                    },
                  ),
                  TextButton.icon(
                    icon: const Icon(Icons.calendar_today),
                    label: Observer(
                      builder: (_) => Text(
                        controller.mapaDatasNomeadas[filtrosDados.tipoFiltro]["dtfim"],
                        style: const TextStyle(fontSize: 17),
                      ),
                    ),
                    onPressed: () async {
                      String data = await SettingsReports().selectDate(
                        context: context,
                      );
                      controller.mapaDatasNomeadas.update(
                        filtrosDados.tipoFiltro, (value) {
                          return {
                            "dtinicio": value["dtinicio"],
                            "dtfim": data,
                            "isEnable": value["isEnable"]
                          };
                        },
                      );
                    },
                  ),
                  PopupMenuButton(
                    itemBuilder: (context) {
                      return controller.listaDePeriodos.map(
                        (valor) {
                          return PopupMenuItem(
                            value: valor.replaceAll(' ', ''),
                            child: Text(valor),
                          );
                        },
                      ).toList();
                    },
                    onSelected: (value) {
                      Map res = controller.selecaoDeDataPorPeriodo(periodo: value.toString(), isDataPadrao: false);
                      controller.mapaDatasNomeadas.update(filtrosDados.tipoFiltro, (value) {
                        return {
                          "dtinicio": "${res["dtinicioFiltro"]}",
                          "dtfim": "${res["dtfimFiltro"]}",
                          "isEnable": value["isEnable"]
                        };
                      },);
                    },
                  )
                ],
              ),
            ],
          ),
        ),
      );
    },
  );
}