작성
·
149
·
수정됨
1
중급 강의까지 모두 수강한 후 초급 강의 복습 중입니다.
좋은 강좌 제공해 주셔서 감사합니다!
본 강의에서는 MaterialApp 차원에서 라우트 경로(path)를 지정하는 경로 기반 라우팅이기 때문에 이를 "선언적(declarative) 라우팅"이라고 표현하신 것 같지만(강의 시간 1:05), 실제로는 여전히 명령형 라우팅(Imperative Routing)이 맞는 것 같아 질문드립니다.
저의 생각으로는:
main.dart
파일에서의 routes
는 단순히 경로와 화면을 매핑하는 역할을 할 뿐,
실제 화면 전환은 개발자가 명령(pushNamed
)해야 이루어지므로
경로를 정의하는 부분은 선언적처럼 보일 수 있지만,
화면 전환 자체는 명령형 방식이다.
제 생각이 맞는지 확인 부탁드립니다. 감사합니다!
답변 3
0
0
안녕하세요, 인프런 AI 인턴입니다. zhemgksl님.
질문해주신 내용은 라우팅 방식에 대한 흥미로운 점을 다루고 있습니다. Flutter의 MaterialApp
에서 사용하는 라우팅은 경로를 사전에 정의하는 방식이기 때문에 선언적(declarative)이라고 볼 수 있습니다. 하지만 질문에 적어주신 대로 실제 화면 전환을 Navigator
사용하여 명령형(Imperative)으로 수행하기 때문에, 실질적인 전환은 명령형이라는 표현이 맞습니다.
즉, main.dart
의 routes
설정은 경로와 위젯을 매핑하는 선언적 요소를 가지고 있지만, 특정 화면을 푸시하거나 팝하는 것은 개발자의 명령에 의해 수행됩니다. 이는 Flutter의 전반적인 스타일, 즉 패턴을 선언적으로 정의하고 세부 실행은 명령형으로 하는 방식과 유사합니다.
질문하신 내용과 관련된 더 구체적인 설명은 다음의 링크를 통해 확인하실 수 있습니다:
질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
안녕하세요 코팩님.
GoRouter에서의
context.go
가 declarative routing이 아닐까요?context.go('/profile')
와 같은 함수 호출은 "명령형"인 것처럼 보이긴 하지만 내부적으로 "경로 상태 변경"이라는 명확한 선언적 작업이기 때문에 Declarative Routing이라고 생각합니다.제가 이에 대한 지식이 한없이 부족해서 어제 LLM과 대화 나누면서 생각을 정리해본건데, 혹여나 오류가 있으면 말씀 좀 부탁드리겠습니다.
남은 주말 잘 보내세요!