Saltar al contenido

¿Cuál es la mejor práctica para mantener todas las constantes en Flutter?

Hola usuario de nuestra página web, hemos encontrado la solución a lo que buscabas, has scroll y la hallarás un poco más abajo.

Solución:

Mi solución preferida es crear mi propia biblioteca Dart.

Haz un nuevo archivo dart llamado constants.darty agrega el siguiente código:

const String SUCCESS_MESSAGE=" You will be contacted by us very soon.";

Editar: el 99% de las veces no necesita nombrar explícitamente sus bibliotecas de dardos con una declaración como library library_name; en la parte superior de su archivo, y probablemente no debería (referencia).
¡Incluso si omite esta línea, su archivo seguirá siendo una biblioteca! Solo se nombrará implícitamente.

Luego agregue la siguiente declaración de importación en la parte superior de cualquier archivo dart que necesite acceso a las constantes:

import 'constants.dart' as Constants;

Tenga en cuenta si constants.dart está en un directorio diferente, entonces deberá especificar la ruta a constants.dart en su declaración de importación.

En este ejemplo:

ingrese la descripción de la imagen aquí

Podrías usar una ruta relativa:

import '../assets/constants.dart' as Constants;

O una ruta absoluta desde el directorio lib:

import 'package:/assets/constants.dart' as Constants;

Ahora puede acceder fácilmente a sus constantes con esta sintaxis:

String a = Constants.SUCCESS_MESSAGE;

EDITAR

Ahora que la bandera --dart-define se ha agregado a las diferentes líneas de comando de Flutter, la siguiente respuesta ya no se aplica.

En su lugar, simplemente declare constantes donde quiera y, potencialmente, consulte otras respuestas.


Si bien no hay problemas técnicos con static const, arquitectónicamente es posible que desee hacerlo de manera diferente.

El aleteo tiende a no tener cualquier global/static variables y usar un InheritedWidget.

Lo que significa que puedes escribir:

class MyConstants extends InheritedWidget 
  static MyConstants of(BuildContext context) => context. dependOnInheritedWidgetOfExactType();

  const MyConstants(Widget child, Key key): super(key: key, child: child);

  final String successMessage = 'Some message';

  @override
  bool updateShouldNotify(MyConstants oldWidget) => false;

Luego insertado en la raíz de su aplicación:

void main() 
  runApp(
    MyConstants(
      child: MyApp(),
    ),
  );

Y usado como tal:

@override
Widget build(BuilContext context) 
  return Text(MyConstants.of(context).successMessage);


Esto tiene un poco más de código que el static const, pero ofrecen muchas ventajas:

  • Funciona con recarga en caliente
  • Fácilmente comprobable y simulable
  • Se puede reemplazar con algo más dinámico que las constantes sin reescribir toda la aplicación.

Pero al mismo tiempo:

  1. No consume mucha más memoria (el widget heredado normalmente se crea una vez)
  2. Es eficiente (Obtener un InheritedWidget es O(1))

Eso depende completamente de ti.
Utilizando static no tiene desventajas.
Realmente const es obligatorio para los campos de una clase.

Sección de Reseñas y Valoraciones

Si para ti ha resultado de provecho nuestro artículo, nos gustaría que lo compartas con más entusiastas de la programación de este modo nos ayudas a extender esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *