Hoja de referencia de Flutter (Dart)
Algunas construcciones básicas del lenguaje Dart descritas
Aquí tienes una guía rápida para Flutter (Dart) con los comandos y construcciones del lenguaje más útiles:
La imagen de arriba es una imagen generada por IA (con el modelo Flux 1 dev) del desarrollador tocando flauta y dardos.
Comandos de la CLI de Flutter
Crear un nuevo proyecto de Flutter:
flutter create <nombre_del_proyecto>
Ejecutar una aplicación de Flutter:
flutter run
Compilar un APK de lanzamiento:
flutter build apk
Analizar código de Dart:
flutter analyze
Ejecutar pruebas:
flutter test
Obtener paquetes:
flutter pub get
Actualizar Flutter:
flutter upgrade
Verificar la instalación de Flutter:
flutter doctor
Construcciones del lenguaje Dart
Variables y tipos de datos:
int age = 30;
double price = 9.99;
String name = 'John';
bool isActive = true;
var dynamicVar = 'Puede ser cualquier tipo';
final constantVar = 'No puede reasignarse';
const compiletimeConstant = 'Constante en tiempo de compilación';
Seguridad nula:
String? nullableString;
String nonNullableString = 'Hola';
Funciones:
void simplePrint() {
print('Hola');
}
int add(int a, int b) => a + b;
void namedParams({required String name, int? age}) {
// Cuerpo de la función
}
void optionalParams(String name, [int? age]) {
// Cuerpo de la función
}
Control de flujo:
if (condición) {
// código
} else if (otraCondición) {
// código
} else {
// código
}
for (var i = 0; i < 5; i++) {
// código
}
while (condición) {
// código
}
switch (variable) {
case valor1:
// código
break;
default:
// código
}
Listas y mapas:
List<int> numbers = [1, 2, 3];
Map<String, int> ages = {'Alice': 30, 'Bob': 25};
Clases:
class Persona {
String name;
int age;
Persona(this.name, this.age);
void sayHello() {
print('Hola, soy $name');
}
}
Programación asíncrona:
Future<void> fetchData() async {
try {
var result = await someAsyncOperation();
print(result);
} catch (e) {
print('Error: $e');
}
}
Flujos:
Stream<int> countStream(int max) async* {
for (int i = 0; i < max; i++) {
yield i;
}
}
Manejo de errores:
try {
// Código que podría lanzar una excepción
} on EspecíficaExcepción {
// Manejar excepción específica
} catch (e) {
// Manejar cualquier excepción
} finally {
// Siempre se ejecuta
}
Esta guía rápida cubre los comandos más esenciales de Flutter y las construcciones del lenguaje Dart, proporcionando una referencia rápida para los desarrolladores de Flutter.
Seguridad nula en Flutter / Dart
El manejo de la seguridad nula en Dart para aplicaciones Flutter es crucial para escribir código robusto y libre de errores. Aquí tienes una guía simple sobre cómo trabajar con la seguridad nula:
Declarar variables
Variables no nulas:
int age = 30;
String name = 'John';
Variables nulas:
int? nullableAge;
String? nullableName;
Trabajar con tipos nulos
Operadores de seguridad nula:
- Operador de acceso seguro (?.)
String? name;
print(name?.length); // Acceso seguro al largo si name no es nulo
- Operador de coalescencia nula (??)
String? name;
String displayName = name ?? 'Invitado';
- Operador de asignación segura (??=)
String? name;
name ??= 'John'; // Asigna 'John' si name es nulo
Operador de afirmación nula (!) Utiliza este operador con cuidado, ya que puede provocar errores en tiempo de ejecución si el valor es nulo:
String? nullableName = 'John';
String nonNullableName = nullableName!;
Análisis de flujo
El análisis de flujo de Dart ayuda a determinar cuándo una variable nula es segura de usar:
String? getName() => 'John';
void printName() {
String? name = getName();
if (name != null) {
print(name.length); // Seguro de usar name aquí
}
}
Variables tardías
Usa late
para variables no nulas que se inicializan después de la declaración:
late String lateInitializedName;
void initializeName() {
lateInitializedName = 'John';
}
Manejo de parámetros nulos
void greet(String name, {String? title}) {
if (title != null) {
print('Hola, $title $name');
} else {
print('Hola, $name');
}
}
Trabajar con colecciones
Listas nulas:
List<String>? nullableList;
List<String?> listOfNullableStrings = ['Hola', null, 'Mundo'];
Filtrar valores nulos:
List<String?> mixedList = ['a', null, 'b', null, 'c'];
List<String> nonNullList = mixedList.whereType<String>().toList();
Siguiendo estas prácticas, podrás manejar la seguridad nula de manera efectiva en tus aplicaciones Dart y Flutter, reduciendo el riesgo de errores relacionados con valores nulos y mejorando la calidad general del código.