Và, hoặc, phủ định trong Dart
Thuộc phần Tạo tính tương tác trong hành trình Flutter của Coddy. Bài học 19 trên 34.
Thường thì một giá trị bool là chưa đủ. Dart kết hợp chúng bằng ba toán tử:
a && b(và): chỉ đúng khi cả hai đều đúnga || b(hoặc): đúng khi có ít nhất một giá trị đúng!a(phủ định): đảo ngược đúng và sai
bool _hasTicket = true;
bool _isLate = false;
_hasTicket && !_isLate // true: bạn có thể lên máy bay
_hasTicket || _isLate // true: ít nhất một điều kiện là trueKết quả là một giá trị bool, nên có thể đặt trước ? trong biểu thức điều kiện hoặc dùng trong if. Dùng dấu ngoặc đơn sẽ giúp bạn đọc dễ hơn:
Text((_hasTicket && !_isLate) ? 'Board now' : 'Wait')Thử thách
DễCánh cửa chỉ mở khi có chìa khóa và mã. Thay đổi hai dòng:
- dòng đầu hiển thị
The door is openkhi bạn có chìa khóa và biết mã, nếu không thì hiển thịThe door is locked - dòng thứ hai hiển thị
Getting closerkhi bạn có chìa khóa hoặc biết mã, nếu không thì hiển thịFind the key and the code
Tự làm thử
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'),
),
],
),
),
);
}
}
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Tạo tính tương tác
5Quyết định
bool và toán tử ? :Quyết định với if và elseVà, hoặc, phủ định trong DartHiển thị và ẩn widgetLàm mờ nútTự luyện tập: Trình biên dịch Flutter online