인프런 커뮤니티 질문&답변

austin님의 프로필 이미지
austin

작성한 질문수

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

일반 Navigation에서 GoRouter로 전환하기

GoRouter 에서 context의 사용

작성

·

537

0

최신버전을 사용할 때, go 가 작동되지 않는 경우

context 의 type이 dynamic으로 되어있습니다.

이럴 경우 context. 의 properties는

go_router 의 기능을 포함하지 않습니다.

이경우, context as BuildContext 로 치환하여 사용하면 작동이 잘되는데 이렇게 사용할 경우 문제가 있을까요?

답변 1

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

as는 build time에만 타입 캐스팅을 해주는 기능입니다.

즉, 실행하는동안 (run time에) 타입을 변경하지 않습니다.

자동완성이 잘 되지 않는건 아마도 IDE의 인덱싱 기능이 느려서 (하드웨어 퍼포먼스등의 이유 또는 VSC를 사용하는경우 애당초 정확하지 않습니다 - IDE가 아니라서) 또는 IDE나 Dart 엔진 버그일 가능성이 있습니다.

결과적으로, BuildContext로 캐스팅해서 실행될경우 캐스팅 하지 않아도 실행돼야 정상입니다. (빌드타임 에러를 바이패스 할수만 있다면). 그렇기때문에 말씀해주신 예제에서는 실제 실행 상황에서 캐스팅을 하고 안하고는 아무런 차이가 없습니다.

감사합니다!

austin님의 프로필 이미지
austin
질문자

안녕하세요! 답변감사합니다.

만약 타입 캐스팅을 하지 않으면

image이와 같은 에러가 발생하고 타입캐스팅을 하는 경우는 작동을 잘합니다.

이 에러도 IDE 혹은 Dart 엔진의 버그일까요?

현재 IDE 를 VSC 로 사용하고 있습니다. 또한 flutter doctor는 이슈가 없습니다.

감사합니다.

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

SliverMultiBoxAdaptorElement로 인식되는데 그 이유를 알아야 할 것 같습니다.

이게 만약 사실이라면 as로 캐스팅 해봤자 안돼야 정상인데 오히려 이상하네요.

전체 코드를 한번 보여주세요!

감사합니다.

austin님의 프로필 이미지
austin

작성한 질문수

질문하기