Dark mode en Flutter con ThemeMode: ejercicio resuelto

  2 minutos

Si quieres implementar modo oscuro en Flutter, este ejercicio te muestra una base clara con ThemeMode.

Permite alternar entre tema claro y oscuro mediante un switch.

import 'package:flutter/material.dart';

void main() => runApp(const ThemeApp());

class ThemeApp extends StatefulWidget {
  const ThemeApp({super.key});

  @override
  State<ThemeApp> createState() => _ThemeAppState();
}

class _ThemeAppState extends State<ThemeApp> {
  bool isDark = false;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.light(),
      darkTheme: ThemeData.dark(),
      themeMode: isDark ? ThemeMode.dark : ThemeMode.light,
      home: Scaffold(
        appBar: AppBar(title: const Text('Dark mode')),
        body: Center(
          child: SwitchListTile(
            value: isDark,
            title: const Text('Modo oscuro'),
            onChanged: (value) => setState(() => isDark = value),
          ),
        ),
      ),
    );
  }
}

La app cambia de tema al instante y mantiene consistencia visual.

  • Configurar solo theme sin darkTheme.
  • No centralizar colores y estilos.
  • No persistir preferencia del usuario.

El dark mode mejora UX en sesiones largas y es esperado por muchos usuarios.

Sí, para la mayoría de apps cubre bien el caso base.

Sí. Mejora experiencia al recordar preferencia entre sesiones.

Bien implementado mejora confort visual, pero debes cuidar contraste y legibilidad.