문제상황
유사한 레이아웃을 가진 페이지 SeatPage(좌), MySeat(우)이 동일한 코드를 반복적으로 사용중
레이아웃 코드의 위젯화가 필요한데, 좌석정보 관련 변수가 SeatPage내부에서 선언되어 MySeat로 전달하려면 번거로운 과정을 거쳐야 했다.
우선 지역 변수 대신 전역 변수를 사용해 기존 코드를 개선하고, 자주 사용하는 위젯을 분리하기 쉽게 해 주었다.
기존 방식
SeatPage -> MyTicket -> MySeat로 페이지가 넘어갈 때마다 지역 변수를 전달함
좌측
SeatPage => MyTicket 으로 페이지 이동
4개의 지역변수를 전달한다.
우측
MyTicket => MySeat 으로 페이지 이동
2개의 지역변수를 전달한다.
세 페이지에서 같은 값을 사용함에도 매번 코드를 작성해 줘야 하는 불편함이 있다.
개선 방식
station_data.dart
seat_data.dart
파일을 만들어 전역변수를 선언했다.
유저 입력에 따라 값을 받을 변수이므로 ?를 사용해 기본값으로 null을 가질 수 있게 한다.
전역 변수를 사용하면 기존 SeatPage, MySeat에서 반복되는 코드를 외부에 저장하는 것이 편해진다.
기존 코드
MySeat 내부 seat 메서드, textBox 메서드
textBox메서드의 경우 레이아웃 부분만 정의하기 때문에 어디서든 사용할 수 있지만,
seat 메서드는 지역 변수인 selectedRowNum, selectedColStr을 사용하기 때문에 외부로 꺼내 쓰려면 변수 재정의 또는 전달이 필요하다.
개선 코드
widgets_seats.dart 파일 내 seat 메서드, textBox 메서드
전역 변수인 selectedRowGlobal, selectedColGlobal을 임포트 한 번으로 쉽게 불러왔다.
레이아웃과 기능상 차이는 없지만 전역함수와 외부 메서드 사용으로 짧고 깔끔하게 구현이 가능해졌다.
'Flutter' 카테고리의 다른 글
[Flutter] MVVM 기본 개념 정리 (1) | 2025.04.14 |
---|---|
[Flutter] 삼항연산자, null 병합 연산자 (0) | 2025.04.02 |
[Flutter] List.generate로 반복되는 출력 처리하기 (1) | 2025.03.31 |
[Flutter] Container 테두리 그리기 (0) | 2025.03.28 |
[Flutter] AppBar 주요 요소 (0) | 2025.03.28 |