タグ
品質
補足
型安全
- dynamic をなるべく使わない
int sum(dynamic x, dynamic y) {
return x + y;
}
final result = sum("1", 2);
print(result); // error
int sum(int x, int y) {
return x + y;
}
final result = sum(1, 2);
print(result); // 3
メモリ安全
class TextEditingControllerExample extends StatefulWidget {
const TextEditingControllerExample({super.key});
@override
State<TextEditingControllerExample> createState() =>
_TextEditingControllerExampleState();
}
class _TextEditingControllerExampleState
extends State<TextEditingControllerExample> {
// _controller を dispose していない
final TextEditingController _controller = TextEditingController();
@override
Widget build(BuildContext context) {
// 省略
}
}
class TextEditingControllerExample extends StatefulWidget {
const TextEditingControllerExample({super.key});
@override
State<TextEditingControllerExample> createState() =>
_TextEditingControllerExampleState();
}
class _TextEditingControllerExampleState
extends State<TextEditingControllerExample> {
final TextEditingController _controller = TextEditingController();
@override
void dispose() {
super.dispose();
// ここで _controller を破棄
_controller.dispose();
}
@override
Widget build(BuildContext context) {
// 省略
}
}
class HookTextEditingControllerExample extends HookWidget {
const HookTextEditingControllerExample({super.key});
@override
Widget build(BuildContext context) {
// hooks を利用することで、自動で _controller を破棄してくれる
final _controller = useTextEditingController();
// 省略
}
}