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
'Dart & Flutter' 카테고리의 다른 글
[Flutter] FlutterError (setState() or markNeedsBuild() called during build. (0) | 2023.05.12 |
---|---|
[Flutter/Android] Google Play 출시 준비 (0) | 2023.05.10 |
[Flutter] _minScrollExtent Null check Error (0) | 2023.05.09 |
[Flutter] Get Text Size (0) | 2023.05.04 |
[Flutter] Repository Pattern (0) | 2023.05.04 |