1. Instalación de Flutter (Método Reproducible)
Descargar el SDK desde flutter.dev.
Agregar al PATH:
export PATH="$PATH:$HOME/dev/flutter/bin"
Verificar instalación:
flutter doctor
Actualizar Flutter:
flutter upgrade
2. Instalar Android Studio + SDK + Emuladores
- Instalar Android Studio
- Abrir SDK Manager
- Instalar:
- Android SDK 34
- Platform Tools
- Android Emulator
- Crear un emulador (Pixel 6 / API 34)
3. Crear tu primer proyecto
flutter create mi_app
cd mi_app
flutter run
4. Estructura del proyecto
lib/
main.dart
src/
widgets/
screens/
services/
state/
utils/
models/
Esta estructura modular permite escalabilidad, testing y mantenibilidad.
5. Dominar el Core de Flutter
Widgets fundamentales
- StatelessWidget
- StatefulWidget
- BuildContext
- InheritedWidget
Layout
- Column / Row
- Stack
- Expanded / Flexible
- ListView / GridView
Navegación
- Navigator 1.0
- go_router (recomendado)
6. Riverpod — Estado moderno y escalable
Instalar:
flutter pub add flutter_riverpod
Provider simple:
final counterProvider = StateProvider<int>((ref) => 0);
Consumir en UI:
final count = ref.watch(counterProvider);
7. Consumir APIs REST
Ejemplo básico:
final client = http.Client();
final response = await client.get(
Uri.parse("https://api.example.com/data")
);
Con Riverpod:
final dataProvider = FutureProvider((ref) async {
final res = await http.get(Uri.parse("https://api.example.com/data"));
return jsonDecode(res.body);
});
8. Arquitectura limpia recomendada
lib/
src/
features/
auth/
data/
domain/
presentation/
home/
data/
domain/
presentation/
core/
utils/
widgets/
errors/
services/
Separación clara entre UI, dominio y datos.
9. Testing en Flutter
Unit tests:
flutter test
Widget tests:
testWidgets('Mi widget', (tester) async {
await tester.pumpWidget(MyWidget());
expect(find.text('Hola'), findsOneWidget);
});
10. CI/CD básico con GitHub Actions
name: Flutter CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
channel: stable
- run: flutter pub get
- run: flutter test
11. Compilar para todas las plataformas
Android:
flutter build apk --release
Web:
flutter build web --release
Linux Desktop:
flutter config --enable-linux-desktop
flutter build linux --release
BONUS: Integración Flutter + Rust (para cálculos intensivos)
Instalar flutter_rust_bridge:
flutter pub add flutter_rust_bridge
Ejemplo Rust:
#[no_mangle]
pub extern "C" fn suma(a: i32, b: i32) -> i32 {
a + b
}
12. Errores comunes y cómo evitarlos
- No usar arquitectura → usar features/ + core/
- Abusar de StatefulWidget → preferir Riverpod
- No tipar modelos → usar freezed
- No modularizar → dividir por features