[Flutter] This widget has been unmounted, so the State no longer has a context

Taehyun Nam·2021년 12월 6일
0
post-thumbnail

에러 내용

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

context가 언마운트가 되었는데, context를 사용하는 Dialog를 핸들링 했을때 위와 같은 오류가 발생하였음.

해결 방법

main.dart에 GlobalKey Navigator를 선언해주고, 다른 페이지에서 접근해서 사용함.

// main.dart

final navigatorKey = GlobalKey<NavigatorState>(); // 글로벌 키 생성

void main() => runApp(
  MaterialApp(
    home: HomePage(),
    navigatorKey: navigatorKey,		// 키 전달
  ),
);

class HomePage extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: SafeArea(
        child: Center(
          child: Text('test')
        )
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: showMyDialog,
      ),
    );
  }
}

void showMyDialog() {
  showDialog(
    context: navigatorKey.currentContext,	// 키 가져옴
    builder: (context) => Center(
      child: Material(
        color: Colors.transparent,
        child: Text('Hello'),
      ),
    )
  );
}

참고

https://stackoverflow.com/a/61773774

profile
Frontend Developer

0개의 댓글