Enum con extensiones en Flutter

- Andrés Cruz

In english
Enum con extensiones en Flutter

Un tipo de datos enumerado (también conocido como "enumeration" o "enum") es un tipo de dato que consta de un conjunto de valores posibles, que se enumeran explícitamente en la declaración del tipo. En lugar de representar un valor (como un entero), se representa mediante un conjunto de valores de tipo clave/valor Los tipos enumerados son una forma útil de hacer clasificaciones constantes en la aplicación.

En este artículo, analizamos cómo podemos ampliar la funcionalidad de nuestro Enum utilizando métodos de extensión.

Vamos a crear Enum

enum BottomTabEnum {
  home,
  video,
  shop,
  profile,
}

El Enum que creamos arriba es para las pestañas inferiores de nuestra aplicación. Usamos este Enum para nuestra barra de navegación inferior. Tenemos 4 pestañas en nuestra aplicación. Ahora agregaremos más propósito a este Enum usando métodos de extensión.

extension BottomTabsExt on BottomTabsEnum {
  String get title {
    switch (this) {
      case BottomTabsEnum.home:
        return 'Home';
      case BottomTabsEnum.video:
        return 'Explore';
      case BottomTabsEnum.shop:
        return 'Shop';
      case BottomTabsEnum.profile:
        return 'Profile';
    }
  }
  String get iconAssetLocation {
    switch (this) {
      case BottomTabsEnum.home:
        return Assets.imagesChefCooking;
      case BottomTabsEnum.video:
        return Assets.imagesVideoCamera;
      case BottomTabsEnum.shop:
        return Assets.imagesOnlinePayment;
      case BottomTabsEnum.profile:
        return Assets.imagesWomanUsingPhone;
    }
  }
  Color get bgColor {
    switch (this) {
      case BottomTabsEnum.home:
        return const Color(0xFFEDC35D);
      case BottomTabsEnum.video:
        return const Color(0xFFF59273);
      case BottomTabsEnum.shop:
        return const Color(0xFFE1EFEE);
      case BottomTabsEnum.profile:
        return const Color(0xFFF2BBBB);
    }
  }
  onClicked() {
    switch (this) {
      case BottomTabsEnum.home:
        ///Handle onClick
        break;
      case BottomTabsEnum.video:
        ///Handle onClick
        break;
      case BottomTabsEnum.shop:
        ///Handle onClick
        break;
      case BottomTabsEnum.profile:
        ///Handle onClick
        break;
    }
  }
}

Hemos creado diferentes métodos de extensión para nuestro Enum. Esto simplificará nuestro código en gran medida.

Usemos nuestros Enums en una app en Flutter

    ///To get the title
    Text(BottomTabsEnum.video.title);
    ///To get the icon asset location
    Image.asset(
      BottomTabsEnum.home.iconAssetLocation,
      width: 18,
      height: 18,
    );
    ///To get the bg color
    Text(
      'Cool extension',
      style: TextStyle(
        color: BottomTabsEnum.profile.bgColor,
        fontSize: 14,
        height: 1,
        fontWeight: FontWeight.w600,
      ),
    );
    ///To perform click action
    GestureDetector(
      onTap: () {
        BottomTabsEnum.home.onClicked();
      },
      child: child,
    );

Con el ejemplo anterior, puede ver que hay infinitas posibilidades. Podemos asignar más funciones a nuestras constantes Enum sin crear clases adicionales.

https://arkapp.medium.com/supercharge-enum-with-extensions-in-flutter-abf8fdf706fe

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.