이 GridView는 세로축이 기준이기에 cross 접두어가 붙었으니 가로로 몇개를 보여줄 것인가를 뜻한다.
childAspectRatio는 child의 가로세로의 비율을 결정한다.
crossAxisSpacing은 앞서 언급했듯 cross가 붙었으니 가로로 몇 px 정도 띌 건지를 설정하고 main은 세로축을 몇 px씩 띌것인지를 결정한다.
또한 만약 화면 밖으로 넘어간 데이터가 있다면 자동으로 스크롤 기능을 지원한다.
앞서 flutter modal에 관하여 포스팅했을 때 Navigator의 pop메서드를 사용하여 띄워진 모달을 삭제하기도 했다.
그런데 조금 이상하게 생각할 것이다. Navigator는 ui를 바꾸는 것이고 ui를 바꾸는 것은 StatefulWidet에서 하는데 아니 앞에서 StatelessWidet을 최대한 많이 만들라했는데 그럼 Navigator를 사용하는 Screen 급의 큰 위젯을 다 StatefulWidet으로 하라는 건가? 라고 생각할 수 있다. 일단 => 아니다.
일단 당연하게도 위와같이 쓰면 에러가 난다. 왜? => context 객체 자체는 State 클래스에 귀속되어 반드시 StatefulWidet과 함께 쓰이기 때문이다.
따라서 Context 값을 반드시 받아줘야한다.
route 부분에는 MaterialPageRoute 객체가 들어간다.
우리는 이 빌더 함수에서 컨텍스트를 자동으로 얻고 이 함수의 일부로 위젯을 반환해줘야하는데 이때 반환되는 위젯이 바로 다음에 보일 페이지 이다.
즉, 정리하자면 다음과 같다.
이렇게 하면 뒤로가기 동작은 작동하지 않게 될 것이다. 왜? => 원래 있어야할 뒤로가기 버튼 자리에 Scaffold의 drawer 속성을 이용하여 뒤로가기를 햄버거 버튼으로 대체했기 때문이다.
그래서 위 같이 작성한 후 뒤로가기를 누르면 라우팅 대신 앱이 종료될 것이다.
이는 또 다른 탐색 방법중 하나이며 앱의 특징에 맞게 사용하면 된다.