일모도원(日暮途遠) 개발자

[Flutter] context없이 다른 뷰로 navigate하기 본문

Flutter/Flutter개발

[Flutter] context없이 다른 뷰로 navigate하기

달님개발자 2023. 10. 6. 13:37

Local Push를 띄운 상태에서 클릭하면 다른 뷰를 열려고 하는데, 기존에 쓰던 Navigator.push는 context가 필요하여 쓸수가 없다.

실제로 에러나는 부분은 빨간색 context이다. (context)는 에러나는 부분이 아니다.

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => NewPage(),
  ),
);

 

이럴때는 GlobalKey를 써보자.

GlobalKey : A key that is unique across the entire app.

 

아래처럼 navigatorKey라는 변수를 GlobalKey로 선언하고, main함수에서 navigatorKey에 할당해주자.

final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();

void main() async {
  runApp(
    MaterialApp(
      navigatorKey: navigatorKey,
      home: const MyApp(),
    ),
  );
}

 

그리고 아래처럼 사용하면 된다.  (여기에 보이는 (context)변수랑, Navigator.push에 있는 context랑 헷갈리지 말자)

  navigatorKey.currentState?.push(
    MaterialPageRoute(
      builder: (context) => NewPage(),
    ),
  );