navigator method

dynamic navigator({
  1. required dynamic pagina,
  2. required BuildContext context,
  3. bool isToShowFiltroNoMeio = false,
  4. required LayoutControllerPackage layout,
})

Implementation

navigator({
  required dynamic pagina,
  required BuildContext context,
  bool isToShowFiltroNoMeio = false,
  required LayoutControllerPackage layout,
}) async {
  if (layout.mobile || layout.tablet) {
    await Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => Material(
          color: Colors.transparent,
          child: pagina,
        ),
      ),
    );
  } else {
    switch (pagina.runtimeType) {
      case const (ItensFiltro):
        Widget widgetContrucao = Row(
          mainAxisAlignment: MainAxisAlignment.end,
          children: [
            Expanded(
              child: GestureDetector(
                onTap: () {
                  Navigator.of(context).pop();
                },
              ),
            ),
            Drawer(
              width: 500,
              shape: const RoundedRectangleBorder(
                borderRadius: BorderRadius.only(
                  bottomLeft: Radius.circular(15),
                  topLeft: Radius.circular(15),
                ),
              ),
              child: pagina,
            ),
          ],
        );
        await showDialog<void>(
          barrierColor: Colors.black54.withOpacity(0.4),
          context: context,
          barrierDismissible: false,
          builder: (BuildContext context) => widgetContrucao,
        );
        break;
      default:
        await Navigator.push(
          context,
          MaterialPageRoute(
            builder: (context) => Material(
              color: Colors.transparent,
              child: pagina,
            ),
          ),
        );
    }
  }
}