操作
-
@override build
メソッドからextension
に切り出したcustomTextField
のみを呼び出してextension
のUIの表示確認をしようとした。
エラー
- 画面が呼び出されるタイミングでレッドスクリーンエラーが発生してしまった。
No Material widget found. TextField widgets requre a Material widget ancestor with in the closest LookupBoundary
試したこと
- メモリリーク対策
-
TextField
のController
はメモリリーク対策でdispose()
しなければならない。
-
edit_title_view.dart
@override
void dispose() {
// TextEditingControllerは明示的に破棄しないとメモリリークの原因になる
_titleController.dispose();
super.dispose();
}
解決策
- やっぱり
Material
がないと言われているから、何かしら土台を作る必要があると思いScaffold
でcustomTextField()
をラップした。
edit_title_view.dart
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('タイトル編集'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: customTextField()
),
);
}
- うまくいった。