Dart & Flutter

[Flutter] This widget has been unmounted, so the State no longer has a context (and should be considered defunct).

ju_young 2023. 5. 10. 16:41
728x90
FlutterError (This widget has been unmounted, so the State no longer has a context (and should be considered defunct). Consider canceling any active work during "dispose" or using the "mounted" getter to determine if the State is still active.)

 

위 에러를 만났을때의 코드를 확인해보면 다음과 같다.

@override
  void initState() {
    super.initState();
    Navigator.pop(context); // this code is problem
    Navigator.push(
        context, MaterialPageRoute(builder: (context) => HomeScreen()));
  }

현재 page를 pop하고 다른 page를 push해버리면서 에러가 나타나버렸는데 그 이유는 parent widget이 없어져버려서 context를 사용할 수 없기때문이다.

 

해결 방법은 HomeScreen에서 pop 할때 나오는 result 값을 받아서 pop을 했다는 사실을 확인한 후 종료나 pop을 시키는 것이다.

@override
  void initState() async {
    super.initState();
    final result = await Navigator.push(
        context, MaterialPageRoute(builder: (context) => HomeScreen()));
    if (mounted && result == null) exit(0);
  }

 

728x90