Menu
CoddyTech

Allumer et éteindre avec un interrupteur

Fait partie de la section Rendre l’application interactive du Journey Flutter de Coddy. Leçon 27 sur 34.

Un Switch est un interrupteur marche/arrêt comme ceux que tu connais dans les réglages de ton téléphone. Il affiche une valeur booléenne et t’indique quand quelqu’un le bascule :

Switch(
  value: _wifi,
  onChanged: (bool value) {
    setState(() {
      _wifi = value;
    });
  },
)

value: indique la position à afficher : activé pour true, désactivé pour false. onChanged reçoit la nouvelle valeur quand on appuie dessus.

L’interrupteur ne bouge pas tout seul. Un appui appelle uniquement onChanged ; tu enregistres la nouvelle valeur avec setState, l’écran est reconstruit et l’interrupteur est dessiné à sa nouvelle position. Si tu oublies cette étape, l’interrupteur revient à sa position initiale chaque fois que tu appuies dessus.

challenge icon

Défi

Facile
  • Fais fonctionner le commutateur : stocke la nouvelle valeur dans _dark avec setState.
  • Donne au Scaffold une backgroundColor égale à Colors.black lorsque le mode sombre est activé, et à Colors.white lorsqu’il est désactivé. La couleur du libellé change déjà.

Essayez vous-même

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: const HomePage(),
    );
  }
}

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

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  bool _dark = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      appBar: AppBar(title: const Text('Settings')),
      body: Center(
        child: Row(
          mainAxisSize: MainAxisSize.min,
          children: [
            Text(
              'Dark mode',
              style: TextStyle(fontSize: 20, color: _dark ? Colors.white : Colors.black),
            ),
            const SizedBox(width: 12),
            Switch(
              value: _dark,
              onChanged: (bool value) {},
            ),
          ],
        ),
      ),
    );
  }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Rendre l’application interactive

Entraînez-vous par vous-même : Compilateur Flutter en ligne