Menu
CoddyTech

And, Or et Not dans Dart

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

Souvent, un seul bool ne suffit pas. Dart les combine avec trois opérateurs :

  • a && b (et) : vrai uniquement lorsque les deux sont vrais
  • a || b (ou) : vrai lorsqu’au moins un est vrai
  • !a (non) : inverse vrai et faux
bool _hasTicket = true;
bool _isLate = false;

_hasTicket && !_isLate   // true : vous pouvez monter à bord
_hasTicket || _isLate    // true : au moins l’un des deux est vrai

Le résultat est un bool ; il peut donc être placé avant le ? d’une expression conditionnelle ou dans un if. Les parenthèses facilitent la lecture :

Text((_hasTicket && !_isLate) ? 'Board now' : 'Wait')
challenge icon

Défi

Facile

La porte ne s’ouvre qu’avec la clé et le code. Modifie les deux lignes :

  • la première affiche The door is open lorsque tu as la clé et connais le code, sinon The door is locked
  • la deuxième affiche Getting closer lorsque tu as la clé ou connais le code, sinon Find the key and the code

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 _hasKey = false;
  bool _knowsCode = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Door')),
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            const Text('The door is locked', style: TextStyle(fontSize: 24)),
            const Text('Find the key and the code'),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: () {
                setState(() {
                  _hasKey = true;
                });
              },
              child: const Text('Take the key'),
            ),
            ElevatedButton(
              onPressed: () {
                setState(() {
                  _knowsCode = true;
                });
              },
              child: const Text('Learn the code'),
            ),
          ],
        ),
      ),
    );
  }
}
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