Aggiungere il toggle per cambiare tema
Creiamo la HomePage con uno SwitchListTile per attivare la dark mode e un gruppo di scelte per selezionare la modalità (chiaro, scuro o sistema). I colori dei widget si adatteranno automaticamente perché usano il ColorScheme del tema attivo.
import 'package:flutter/material.dart';
import 'main.dart';
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
final mode = themeController.themeMode;
return Scaffold(
appBar: AppBar(title: const Text('Gestione Temi')),
body: ListView(
padding: const EdgeInsets.all(16),
children: [
SwitchListTile(
title: const Text('Modalità scura'),
value: themeController.isDark,
onChanged: themeController.toggleDark,
),
const Divider(),
RadioListTile<ThemeMode>(
title: const Text('Sistema'),
value: ThemeMode.system,
groupValue: mode,
onChanged: (v) => themeController.setMode(v!),
),
RadioListTile<ThemeMode>(
title: const Text('Chiaro'),
value: ThemeMode.light,
groupValue: mode,
onChanged: (v) => themeController.setMode(v!),
),
RadioListTile<ThemeMode>(
title: const Text('Scuro'),
value: ThemeMode.dark,
groupValue: mode,
onChanged: (v) => themeController.setMode(v!),
),
const SizedBox(height: 24),
Card(
child: Padding(
padding: const EdgeInsets.all(16),
child: Text(
'Esempio di contenuto che cambia colore con il tema.',
style: Theme.of(context).textTheme.bodyLarge,
),
),
),
],
),
);
}
}
Risultato atteso
Cambiando lo switch o la modalità l'intera interfaccia passa da chiaro a scuro istantaneamente.