Hoja de referencia de Flutter (Dart)

Algunas construcciones básicas del lenguaje Dart descritas

Índice

Aquí tienes una guía rápida para Flutter (Dart) con los comandos y construcciones del lenguaje más útiles:

desarrollador tocando flauta y dardos 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:

  1. Operador de acceso seguro (?.)
String? name;
print(name?.length); // Acceso seguro al largo si name no es nulo
  1. Operador de coalescencia nula (??)
String? name;
String displayName = name ?? 'Invitado';
  1. 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.

Enlaces útiles