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.dart
y 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:
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:
- No consume mucha más memoria (el widget heredado normalmente se crea una vez)
- 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.