개발자
안녕하십니까! Flutter로 졸업 작품 앱 개발 진행 중인 대학생입니다. Splash 화면 구현과, 자동 로그인 및 사용자 초기 정보 입력 페이지를 구현하던 중, 화면 전환에 대해 궁금한 점이 생겼습니다. 1. Navigator.push()를 이용해서 route를 전환 2. route를 구성하는 전체 위젯을 갈아끼움 두 방법 중 사용자에게 또 다른 화면 구성을 제공하는 방법에는 어떤 것이 더 효율적이며, 무슨 차이가 있는지 궁금합니다!! 예시 1번 if (_autoLogin) { Navigator.push(context, (context) => FirstPage()); } else { Navigator.push(context, (context) => SecondPage()); } 2번 Scaffold( body: _autoLogin ? FirstPage() : SecondPage() )
답변 2
인기 답변
1의경우 secondpage에서 pop해서 자동로그인을 체크할 필요가 없다면 push가 아닌 pushAndRemoveUntil을 써서 화면을 클리어하는 걸 추천합니다. 2번의 경우 firstPage던 SecondPage건 setState를 할때마다 _autoLogin을 호출해서 매번 체크합니다. 필요없는 rebuild가 발생하는 거죠. 네비게이터에 스택을 비우고 이동시키고 로그아웃후 로그인페이지로 다시 돌아오게 할때도 동일하게 스택을 비우고 로그인페이지만 나오게 짜시는 걸 추천합니다.
익명
작성자
2024년 03월 03일
이해했습니다! 답변 감사드립니다!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 03월 02일
두 가지 방법이 모두 작동하지만, 사용 사례에 따라 다르게 적용될 수 있습니다. 1. Navigator.push를 사용하면, 이전 화면으로 뒤로 돌아갈 수 있고(next)/prev 버튼) 앱의 navigation history를 관리하는 데 아주 좋습니다. 여기서는 새로운 화면(view)가 전체 화면을 차지하며, 이전 화면은 스택에 push되거나 pop됩니다. 이 방법은 메인 페이지에서 세부 페이지로 이동할 때 일반적으로 사용됩니다. 2. 다른 방법은 특정 부분의 위젯만 변경하는 방식입니다. Scaffold 내에서 조건 연산자를 사용해 어떤 위젯이 보여야 하는지 결정할 수 있습니다. 그러므로 액티비티 전환시 완전한 화면 전환이 발생하지 않으며, 해당 부분만 바뀝니다. 예를 들어, 같은 페이지 내에서 여러 탭을 전환하거나 어떤 상태에 따라 화면의 일부가 변경되어야 할 때 유용합니다. 따라서 여러분의 요구사항에 따라 필요한 접근방식을 선택할 수 있습니다. - 만약 로그인 후 자동으로 새로운 페이지(예: FirstPage)로 이동해야 하며, 로그인 화면으로 다시 돌아올 필요가 없다면 첫 번째 방법을 사용하는 것이 좋습니다. - 그러나 앱 내에서 여러 개의 페이지나 상태를 빠르게 전환해야 하고, 이전 상태로 쉽게 돌아갈 필요가 있다면 두 번째 방법이 더 효과적일 수 있습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!