וגם, או ולא ב-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')אתגר
קלהדלת נפתחת רק עם המפתח והקוד. שנה את שתי השורות:
- הראשונה מציגה
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'),
),
],
),
),
);
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה הוספת אינטראקטיביות
תרגלו בעצמכם: קומפיילר Flutter אונליין