Menu
CoddyTech

וגם, או ולא ב-Dart

חלק מהיחידה הוספת אינטראקטיביות במסלול ה-Flutter של Coddy. שיעור 19 מתוך 34.

לעיתים קרובות ערך בוליאני אחד לא מספיק. Dart מחברת ביניהם באמצעות שלושה אופרטורים:

  • a && b (וגם): אמת רק כששניהם אמת
  • a || b (או): אמת כשיש לפחות אחד שהוא אמת
  • !a (לא): הופך בין אמת לשקר
bool _hasTicket = true;
bool _isLate = false;

_hasTicket && !_isLate   // true: אפשר לעלות
_hasTicket || _isLate    // true: לפחות אחד מהם נכון

התוצאה היא ערך בוליאני, ולכן היא מתאימה לפני ה־? של תנאי, או בתוך if. סוגריים מקלים על הקריאה:

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

אתגר

קל

הדלת נפתחת רק עם המפתח והקוד. שנה את שתי השורות:

  • הראשונה מציגה The door is open כשיש לך את המפתח וגם ידוע לך הקוד, אחרת היא מציגה The door is locked
  • השנייה מציגה Getting closer כשיש לך את המפתח או ידוע לך הקוד, אחרת היא מציגה Find the key and the code

נסו בעצמכם

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 iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה הוספת אינטראקטיביות

תרגלו בעצמכם: קומפיילר Flutter אונליין