목록전체 글 (242)
말랑한 하루
🐇 천지인 키보드 지원 캐릭터를 검색하는 시점에 TextField에서 키보드 자판을 통해 문자를 입력받는 구간이 있다. 기존에는 무분별한 입력을 막기 위해 모음 선행 입력을 막아놨으나, 천지인 키보드에서는 입력이 되지 않는 다는 피드백을 받았다. 생각해보니, 입력 자체에는 문제가 없어야 하고 검색 시에는 무분별한 입력을 막아놓는 UX로 변경되어야 함을 깨달았다. 또한, 천지인 키보드의 경우 Middle Dot이 있는데, 이 문자에 대한 입력을 신경써 주어야 함을 알게되었다. // 기본 천지인키 ᆞᆢ // 삼성 한손모아키 ㆍ 위 세가지 Middle Dot에 대해 정규표현식에 추가해주며, 천지인 키보드를 지원할 수 있게 만들었다. 🐇 데이터 요청 로직 변경 나는 Notifier를 사용하지 않을 때 자동으로 ..
비공개 테스트는 약 20명의 테스터를 선발하여 2주 동안 진행하는 과정이다. 신입 개발자 계정은 바로 프로모션으로 출시할 수 없고 이 과정을 반드시 거쳐야 한다는 흠이 있다. 2023년 12월 이후 개정된 사안으로, 애플리케이션 출시 전 앱 자체의 성능과 개선 사항을 해결하면서 사용자에게 맞는 앱으로 탄생할 수 있게 하자는 취지이다. 이런 비공개 테스트를 약 2주 동안 진행하면서, 내가 고쳐왔던 그리고 고치고 싶었던 내용과 보안 이슈 등에 관하여 서술할 예정이고, 추후 고도화를 위한 작업을 진행하면서 새로운 버전의 앱을 출시하고, 사용자들로 하여금 새로운 버전을 다운 받을 수 있게 하는 행위까지 경험해보려 한다. 🐇 dio request exception CRUD를 진행하면서 한 요청에 하나의 쿼리를 진..
리젝을 해결하기 위한 기간이 꽤나 오랜 기간이 걸렸다. 실질적으로 Play Console에서 주는 답변은 특정 항목란에 문제가 있음을 제기하지만, 정확히 어떤 것이 문제인지는 알려주지 않았다. 나는 메이플스토리라는 게임의 애플리케이션을 만들었기 때문에, 관련 단어를 자주 사용했다. 하지만, 스토어 등록정보 권장사항을 바라봤을 때 앱 설명란에 다음의 항목이 존재함을 알아차릴 수 있었다. 🍒 다른 사용자 및 앱과 관계를 오해할 만한 단어 및 문구를 사용하지 않습니다. 즉 메이플스토리라는 게임과의 관계를 오해할 수 있다 판단하여, 적절치 못한 사용이라고 내게 계속 안내해준 것 같았다. 그래서 설명란의 해당 단어를 한쪽은 유지하고, 한쪽은 배제한 채 작성한 채 다시 심사를 진행했다. 이후 배제한 항목은 리젝 사..
무한 캐러셀에 대한 Demo 및 Code는 다음 경로를 참고하세요. ※ reference : https://github.com/Jisup/flutter_sample/tree/main/lib/page/infinityCarousel 무한 캐러셀은 사용자가 처음부터 끝까지 스크롤하지 않고도 계속해서 다음 콘텐츠를 볼 수 있도록 설계된 디자인을 말합니다. 웹 또는 앱에서 여러 이미지나 콘텐츠를 순환하거나 끊임없이 UI요소를 보여주는 UI 방식입니다. InfinityScroll과 가장 큰 차이점은 사용자가 정확히 하나의 콘텐츠를 인지하고 넘길 수 있는 UX를 제공하는 것입니다. 🐇 PageView ※ reference : https://api.flutter.dev/flutter/widgets/PageView-cl..
무한 스크롤에 대한 Demo 및 Code는 다음 경로를 참고하세요. ※ reference : https://github.com/Jisup/flutter_sample/tree/main/lib/page/infinityScroll 무한 스크롤은 사용자 경험 디자인 패턴 중 하나로, 사용자가 스크롤을 활용하여 콘텐츠를 제공받을 때 일정량의 정보를 소비하고 나면 자연스럽게 다음 콘텐츠로 넘어갈 수 있도록 새로운 콘텐츠를 자동으로 추가하여 페이지를 넘기는 번거로움 없이 연속적인 내용을 볼 수 있게 해주는 방식입니다. 개발을 진행함에 있어 신경 써야 하는 부분은 Viewport, Content의 크기 관리와 사용자의 스크롤 제스처 조작입니다. 사용자가 Viewport 내에서 Content의 개수, 크기와 관련되어 일..
이 테스트는 상태관리를 검증하는 역할을 수행합니다. 상태관리를 검증하는 이유는, 코드의 동작을 확인하고 안정성을 보장하여 예측 가능한 애플리케이션을 만들어가기 위해서 진행합니다. 🍒 Notifier 구현 Riverpod의 Notifier를 활용한 상태관리를 구현하는 부분을 추가합니다. Notifier는 TodoUseCase를 활용하여 Todo데이터를 State에 저장하고 관리합니다. final todoProvider = StateNotifierProvider((ref) { final todoUseCase = ref.read(todoUseCaseProvider); return TodoNotifier(todoUseCase: todoUseCase); }); class TodoNotifier extends St..
Clean Architecture에서 UseCase는 Repository를 활용하여 실질적인 비즈니스 로직을 구현하는 것에 초점을 맞추고 있습니다. UseCase Test는 결과를 잘 가져오는지 그리고 MockRepository를 활용한 결과 값과 UseCase의 결과 값이 같은지 비교합니다. 🍒 객체 선언 및 초기화 class MockTodoRepository extends Mock implements TodoRepository {} void main() { late TodoUseCase todoUseCase; late MockTodoRepository mockTodoRepository; setUp(() { mockTodoRepository = MockTodoRepository(); usecase = ..
이 테스트는 data폴더에서 구현한 todo_repository를 검증하는 역할을 수행합니다. repository는 가장 바깥쪽 계층인 Driver, 즉 외부 API와 통신하는 DataSource의 의존성을 주입 받기 때문에, UseCase 🍒 객체 선언 및 초기화 class MockTodoRemoteDataSource extends Mock implements TodoRemoteDataSource {} void main() { late TodoRepository repository; late MockTodoRemoteDataSource mockRemoteDataSource; setUp(() { mockRemoteDataSource = MockTodoRemoteDataSource(); repository..