Menu
CoddyTech

And, Or e Not in Dart

Fa parte della sezione Rendere l’app interattiva del percorso Flutter di Coddy. Lezione 19 di 34.

Spesso un bool non basta. Dart li combina con tre operatori:

  • a && b (e): true solo quando entrambi sono true
  • a || b (o): true quando almeno uno è true
  • !a (non): inverte true e false
bool _hasTicket = true;
bool _isLate = false;

_hasTicket && !_isLate   // true: puoi salire a bordo
_hasTicket || _isLate    // true: almeno uno è vero

Il risultato è un bool, quindi può essere inserito prima del ? di un'espressione condizionale o in un if. Le parentesi ne facilitano la lettura:

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

Sfida

Facile

La porta si apre solo con la chiave e il codice. Modifica le due righe:

  • la prima mostra The door is open quando hai la chiave e conosci il codice, altrimenti The door is locked
  • la seconda mostra Getting closer quando hai la chiave o conosci il codice, altrimenti Find the key and the code

Provalo tu

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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Rendere l’app interattiva

Esercitati da solo: Compilatore Flutter online