일모도원(日暮途遠) 개발자
[Flutter] context없이 다른 뷰로 navigate하기 본문
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(),
),
);
'Flutter > Flutter개발' 카테고리의 다른 글
[Flutter개발] AppBar의 하단 빈부분 없애기. (0) | 2023.11.12 |
---|---|
[Flutter개발] showModalBottomSheet에서 setState를 사용할수 없을때. (0) | 2023.11.05 |
[Flutter개발] backgroundImage에서 비동기 함수 사용하기 (0) | 2023.10.18 |