使用 if 和 else 做出决策
本课属于 Coddy Flutter 学习旅程的“让应用具有交互性”单元。第 18 课,共 34 课。
if 只会在条件为真时运行代码。条件不成立时,else 会运行其他代码:
if (_count < 10) {
_count++;
} else {
print('Full');
}括号里的内容是一个比较,结果是 bool:true 或 false。
a == b:a 等于 b(两个等号;一个等号用于给变量赋值)a != b:a 不等于 ba < b和a > b:小于、大于a <= b和a >= b:小于或等于、大于或等于
注意边界情况:有 8 个杯子时,_glasses < 8 为 false,但 _glasses <= 8 仍为 true,会让第 9 个杯子通过。
在 State 类中,每个方法里都有 context,不只是在 build 中,所以方法也可以显示 SnackBar。
挑战
简单每天喝 8 杯水就够了。修改 _drink,让它只在杯数少于 8 时增加一杯。否则,它会显示一个 SnackBar,其中的提示文字是 That is enough for today。
亲手试试
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> {
int _glasses = 0;
void _drink() {
setState(() {
_glasses++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Water')),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text('Glasses today: $_glasses', style: const TextStyle(fontSize: 24)),
const SizedBox(height: 16),
ElevatedButton(onPressed: _drink, child: const Text('Drink a glass')),
],
),
),
);
}
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
让应用具有交互性中的所有课
自己练习: Flutter 在线编译器