Personalizando nuestro BottomNavigation Bar a Cupertino iOS BottomBar

Clase 41 de 45Curso de Flutter

Una posibilidad que tenemos con Flutter es general Widgets idénticos a los de las plataformas nativas, en este caso para iOS con Cupertino.

En Flutter contamos con una sección especial para iOS, donde podemos generar botones, diálogos, pickers y hasta TabBar’s como es el caso de nuestro requerimiento.

Necesitamos que nuestro BottomBar luzca con una transparencia nativa de iOS

Captura de pantalla 2018-12-28 a la(s) 13.16.21.png

Para eso comenzaremos creando un nuevo archivo llamado platzi_trips_cupertino.dart Crearemos una clase que herede de StatelessWidget de esta forma:

class PlatziTripsCupertino extends StatelessWidget { @override Widget build(BuildContext context) { // TODO: implement build return null; }

Ahora para disponer de la paquetería de Widgets Cupertino es necesario importar lo siguiente en el encabezado del documento debajo del paquete material.

import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart';

La estructura será la misma utilizando Scaffold en la propiedad bottomNavigationBar colocaremos el Widget CupertinoTabScaffold y dentro en la propiedad tabBar pondremos los tabs con el Widget CupertinoTabBar, como se ve a continuación:

class PlatziTripsCupertino extends StatelessWidget { @override Widget build(BuildContext context) { // TODO: implement build return Scaffold( bottomNavigationBar: CupertinoTabScaffold( tabBar: CupertinoTabBar( items: [ BottomNavigationBarItem( icon: Icon(Icons.home, color: Colors.indigo), title: Text("") ), BottomNavigationBarItem( icon: Icon(Icons.search, color: Colors.indigo), title: Text("") ), BottomNavigationBarItem( icon: Icon(Icons.person, color: Colors.indigo), title: Text("") ), ] ), ); }

De esta forma ya estamos generando un TabBar con el estilo transparente que tiene iOS. Ahora nos faltará manejar la navegación, eso lo haremos ahí mismo con la propiedad tabBuilder de la siguiente forma:

tabBuilder: (BuildContext context, int index) { switch (index) { case 0: return CupertinoTabView( builder: (BuildContext context) => HomeTrips(), ); break; case 1: return CupertinoTabView( builder: (BuildContext context) => SearchTrips(), ); break; case 2: return CupertinoTabView( builder: (BuildContext context) => ProfileTrips(), ); break; } },

Mira el código unificado aquí: https://github.com/anncode1/Curso-de-Flutter-en-Platzi/tree/16.BottomNavigationBarCupertino/lib

Este será el resultado:

Captura de pantalla 2018-12-28 a la(s) 13.19.52.png

Captura de pantalla 2018-12-28 a la(s) 13.20.24.png

Ahora ya puedes generar Widgets que luzcan tan nativos como tu diseño te lo exija.