말랑한 하루

[Flutter] (Project) MapleApp: 33. 비공개 테스트-2 본문

개발/Flutter

[Flutter] (Project) MapleApp: 33. 비공개 테스트-2

지수는말랑이 2024. 3. 2. 16:35
반응형

🐇 천지인 키보드 지원

캐릭터를 검색하는 시점에 TextField에서 키보드 자판을 통해 문자를 입력받는 구간이 있다. 기존에는 무분별한 입력을 막기 위해 모음 선행 입력을 막아놨으나, 천지인 키보드에서는 입력이 되지 않는 다는 피드백을 받았다. 생각해보니, 입력 자체에는 문제가 없어야 하고 검색 시에는 무분별한 입력을 막아놓는 UX로 변경되어야 함을 깨달았다.

 

또한, 천지인 키보드의 경우 Middle Dot이 있는데, 이 문자에 대한 입력을 신경써 주어야 함을 알게되었다.

// 기본 천지인키
ᆞᆢ
// 삼성 한손모아키
ㆍ

위 세가지 Middle Dot에 대해 정규표현식에 추가해주며, 천지인 키보드를 지원할 수 있게 만들었다.

🐇 데이터 요청 로직 변경

나는 Notifier를 사용하지 않을 때 자동으로 메모리 해제가 될 수 있도록 AutoDisposeNotifier를 사용했다.

 

그러나 내가 기본 데이터를 변경하지 않아도, Notifier가 이미 해제되었기 때문에 기존의 NavigatorTab에 접근하여도 Notifier를 새로 생성하여 모든 API 요청을 다시금 불러오면서 로직을 변경해야겠다고 생각했다.

 

그래서 AutoDisposeNotifier를 기본 Notifier로 변경하고, Notifier에서 특정 조건에 따라 데이터를 새로 갱신할 수 있도록 로직을 새로 구성했다.

 

이 애플리케이션의 경우 기본 값인 닉네임이 변경되었을 때, 내부 데이터에 대한 새로운 업데이트를 진행해야 한다. 그래서, 기본적으로 Navigator를 선택하였을 때 닉네임에 대한 정보를 업데이트 하도록 구성해놓고, 내부 로직에 old/new 닉네임을 비교하여 업데이트를 진행에 대한 판단을 설정해 놓았다.

 

대부분의 애플리케이션은 특정 페이지에 진입할 때, 해당 Notifier가 생성되고 그 페이지가 유지되는 한 Notifier는 지속되어 활용할 수 있으므로 현재 내 방식은 타 애플리케이션이나 백엔드 서버를 가지고 있는 애플리케이션과는 다른 양상을 보인다고 생각한다.

 

나와 비슷한 현상을 가진 사람이 이 글을 보고 도움이 되길 바란다.

🐇 PageView Widget

GestureDetector를 사용하면, 사용자의 Swip 제스쳐에 따라 화면이 움직이지만 화면을 넘긴다는 생각은 들지 않는 UX이다. 그래서 추가적으로 AnimationWidget을 추가해야 하는데, 생각보다 개발 비용이 높다고 판단했다.

 

이를 해결해줄 수 있는 부분이 PageView Widget이다. PageView는 네 방향으로 Swip제스쳐 기능을 제공하고, 페이지를 한장씩 넘기는듯한 UX를 경험할 수 있게 도와준다.

🐇 뒤로가기 버튼 제어

기기의 뒤로가기 버튼을 클릭했을 때, 네비게이터가 예상했던 대로 작동하지 않고 애플리케이션이 꺼져버리는 현상이 발생했다.

 

가장 근본적인 이유는, 설정해논 Router의 Nested 구조가 잘못되어있었기 때문이다.

 

나는 Home을 비롯한 여러가지 탭을 네비게이터의 최상단으로 설정해 놓았었기 때문에, 다른 탭에서 Home으로 이동할 수 없었다.

 

Home 하위에 나머지 네비게이션 탭 정보를 추가함으로써, 원하던 결과를 만들어낼 수 있었다.

반응형
Comments