[障害対応]非同期処理の中でのBuildContextの利用時の注意点

非同期処理の中での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();
                }
              },

コメントを残す