Menu
CoddyTech
flag Ar iconالعربيةdown icon

And وOr وNot في Dart

جزء من قسم إضافة التفاعلية في رحلة Flutter على Coddy. الدرس 19 من 34.

غالبًا لا تكفي قيمة منطقية واحدة. يربطها Dart بثلاثة عوامل:

  • a && b (و): تكون النتيجة true فقط عندما تكون القيمتان true
  • a || b (أو): تكون النتيجة true عندما تكون قيمة واحدة على الأقل true
  • !a (ليس): يعكس true وfalse
bool _hasTicket = true;
bool _isLate = false;

_hasTicket && !_isLate   // true: يمكنك الصعود
_hasTicket || _isLate    // true: قيمة واحدة على الأقل هي 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 عبر الإنترنت