非同期処理の中でのBuildContextの利用時には、BuildContextの存在を確認してから利用します。
(修正前)
TextButton(
child: const Text('取消'),
onPressed: () {
Navigator.of(context).pop();
},
),
TextButton(
child: const Text('追加'),
onPressed: () async{
newCateDescription = TextEditingController().text;
if(newCateDescription.isNotEmpty){
// カテゴリDB追加
if (kDebugMode) {
print('カテゴリDB登録しました:$newCateDescription');
}
ManageDbProcess dbProcess = ManageDbProcess();
await dbProcess.manageAddCate(newCateDescription);
loadTabs();
}
Navigator.of(context).pop();
},
),
↓
(修正後)
TextButton(
child: const Text('取消'),
onPressed: () {
Navigator.of(context).pop();
},
),
TextButton(
child: const Text('追加'),
// 修正 ↓
onPressed: () async{
if (_controller.text.isNotEmpty) {
ManageDbProcess dbProcess = ManageDbProcess();
if (kDebugMode) {
print('_controller.text: ${_controller.text}');
}
int newCateId = await dbProcess.manageAddCate(_controller.text);
if (newCateId != -1) {
loadTabs();
} else {
}
}
if (mounted) {
// ignore: use_build_context_synchronously
Navigator.of(context).pop();
}
},