flutter + GetX 조합을 사용하면서 굉장히 불친절한 에러 메세지를 맞닥뜨렸다.
Null check operator used on a null value
새 스크린을 추가하고 Get.toNamed
함수를 호출하는 시점에서 에러가 난다. 딱 여기까지만 알려주고 정확히 어떤 null check operator에서 난 에러인지는 안 알려준다. 그리고 스택 트레이스를 살펴보면 특별한 내용 없이 Get.toNamed()
를 가리키고 있다.
원인은 GetMaterialApp
의 route
옵션에 새로운 스크린을 등록하지 않아서였다. 그러니까 이렇게 GetPage
를 등록해주고 나면...
// 라우트 정의 파일
static final List<GetPage> pages = [
// ...
GetPage(
name: SearchScreen.name,
page: () => const SearchScreen(),
binding: SearchBarBinding(),
),
];
// 메인
Widget build(BuildContext context) {
return GetMaterialApp(
title: MyConstants.APP_NAME,
home: const HomeScreen(),
getPages: MyPages.pages,
initialBinding: InitialBinding(),
);
}
문제없이 잘 작동한다. 플러터 null safety 업뎃 이후 좀 더 자세한 에러 메세지가 띄워졌으면 하는 바람이..🥲 혹시나 비슷한 상황에서 같은 에러 메세지를 만났다면 라우팅 등록을 깜박한게 아닌지 의심해보자.
저도 종종 그래서 공감되네요