분류 전체보기 202

[Flutter] 특정 스크린을 보고 있는지 확인하기(with WidgetsBindingObserver visibility_detector)

0. 문제 상황 유저가 특정 스크린을 다시 볼 때 마다 데이터를 업데이트를 하는 기능을 추가하게 되었다. 구체적으로 데이터가 업데이트되는 상황은 다음과 같다. 1. 유저가 다른 스크린에 갔다가 다시 해당 스크린으로 돌아올 때 2. 유저가 해당 스크린에서 앱 바깥으로 나갔다가(background) 다시 앱으로 돌아왔을 때(foreground)` 이 기능을 구현하기 위해서는 먼저, 유저가 현재 해당 스크린을 보고 있다는 걸 확인해야 한다. WidgetsBindingObserver와 visibility_detector를 사용해서 구현하였다. 1. WidgetsBindingObserver 공식문서 WidgetsBindingObserver은 mixin으로 사용하며, initState와 dispose에서 obser..

앱/Flutter 2023.07.16

블로그 이사!!!

이 블로그에는 코딩 처음 공부하고, 서버 처음 만들고, 팀프로젝트를 진행하면서 마주했던 많은 고민들이 담겨있다. 짧은 시간이지만 그 사이에 이직도 한 번 했고, 앱개발을 새롭게 시작하게 되었다. 여기에는 주로 회고 글이 대부분인데, 계속 업무를 하고 공부를 하다보니 뭔가 하나에 대해 더 깊게 공부하고 찾아보는 일이 많아졌고, 공부하고 고민한 걸 잘 정리하는 게 필요하다고 생각했다. 이런 성격에 글을 쓰기에는 티스토리보다 벨로그가 나을 것 같아서, 여기는 이전까지의 기록을 남겨두고 앞으로는 새로운 블로그를 사용할 것 같다! https://velog.io/@paran22 paran22 (Kim Gaeun) - velog velog.io

카테고리 없음 2022.11.11

[Exercism] Anagram #sort!!!!!

https://exercism.org/tracks/dart/exercises/anagram Anagram in Dart on Exercism Can you solve Anagram in Dart? Improve your Dart skills with support from our world-class team of mentors. exercism.org word와 list가 주어지고, list 안에서 word의 글자들을 바꾼 경우(즉 각 알파벳의 개수도 같아야 한다)에 해당하는 단어들만 찾는 문제이다. 대소문자를 구분하지 않고 완전히 일치하는 경우에는 답이 아니다. 처음에 문제를 풀었던 방식은 다음과 같다. 결국 알파벳 하나하나를 살펴봐야 하니까 for문을 돌릴 수 밖에 없다고 생각했다. class An..

Language/Dart 2022.09.21

20220920-21 TIL #비즈니스 로직은 분리 #레이어를 나누자 #Repository pattern

이번주 초까지 급하게 끝내야 하는 일정이 있어서 코드리뷰를 못하다가, 약간 시간이 생긴 오늘 코드리뷰를 했다. 평소에도 궁금한건 물어보면서 진행했지만, 오늘 리뷰하면서 전체적으로 우리 앱의 아키텍처에 대해서도 다시 설명을 해주셨다. 마침 오늘 아침에 서버 연동 부분을 보면서 어떤 레이어 구조로 나눠져 있는지, 각각 어떤 역할을 하는지 다시 살펴보았고, 계속 업무를 하면서 처음보다는 이해가 된 부분도 있고 궁금해진 점도 있어서, 2시간 가까이 얘기하면서 많은 부분이 정리되었다. 최근에 가장 큰 고민은 비즈니스 로직을 어디에 구현해야하는지, 였다. 우리 패키지 구조에서 이미 ui와 feature는 구분을 하고 있고, 위젯을 만들면서도 계속 위젯에는 로직이 들어가지 않게 분리하려고 했다. ui와 비즈니스 로..

회고 2022.09.21

20220915-16 TIL #Tabbar #scroll #차트만들기 #provider

새로운 페이지 작업을 하게 되었는데, tabbar, scroll, 차트 기능이 포함되어 있다. Tabbar + scroll Tab을 이용해서, Tab마다 다른 화면을 그릴 수 있다. https://docs.flutter.dev/cookbook/design/tabs Work with tabs How to implement tabs in a layout. docs.flutter.dev Tabbar는 Appbar의 bottom으로 구현할 수도 있고, Appbar가 아니라 Scaffold의 body 안에도 구현할 수 있다. 처음에는 Appbar에 bottom에 DefaultTabController를 이용해서 구현하고, Scaffold body에 TabBarView를 구현하였다. 그런데 TabBar와 TabBa..

회고 2022.09.19

[Exercism] Rna Transcription

https://exercism.org/tracks/dart/exercises/rna-transcription Rna Transcription in Dart on Exercism Can you solve Rna Transcription in Dart? Improve your Dart skills with support from our world-class team of mentors. exercism.org 주어진 String에서 특정 단어를 변경하면 되는 문제이다. 함수형 프로그래밍에 아직 익숙하지 않아서, 가급적 함수형으로 해보려고 노력중이다. split으로 iterable을 만들고 map을 돌려서 조건에 해당하는 경우에는 글자를 바꿔주었고, reduce로 다시 새로운 String으로 만들어서 retu..

Language/Dart 2022.09.18

20220913 TIL #타이머만들기 #overflow #Hero

이번주부터 오늘 해야할 일, 내일 해야할 일을 간단하게 메모를 하면서 업무를 하고 있다. 어떤 걸 먼저해야 하는지, 내가 이 일이 얼마나 걸리는지도 파악할 겸, 간단하게 메모만 하고 있는데 오늘 계획한 일은 거의 다 끝난 거 같아서 뿌듯하다. 타이머 만들기 간단하게 타이머를 만들었다. 마침 우리 앱에서 사용하고 있는 riverpod을 사용한 예제를 발견해서 많이 참고가 되었다. https://medium.com/flutter-community/flutter-riverpod-tutorial-timer-app-186d04637775 Flutter Riverpod tutorial: Timer app Step-by-step instructions to create your second Riverpod proje..

회고 2022.09.15

20220907-08 TIL #ui작업하기 #위젯 #비즈니스로직분리하기

처음 업무를 받은 날, 재택을 하다보니 여러가지 궁금한 점이 많았다. 슬렉으로 계속 질문하면서 업무를 했지만, 아직 업무 코드 파악이 덜 된 부분도 많았고 플러터는 처음 하다보니 어떤 방식으로 업무를 해야하는지도 아직 감이 오지 않았다. 우선 비교적 간단한 페이지 UI를 작업하기로 했는데, 위젯(컴포넌트)만 하더라도 새로 만드는게 좋은지, 기존에 만들어진 위젯을 사용하는게 좋은지 판단이 잘 되지 않았다. 출근해서 업무를 하면서 사수와 이런 고민들을 같이 얘기하면서 알고보니 컴포넌트화 되있는 위젯 버튼이 있는 경우도 있었고, 기존에 만들어져있는 컴포넌트에서 required parameter 하나를 그냥 empty string을 넣고 사용하는게 낫겠다고 판단이 되는 경우도 있었다. 또, 기존 컴포넌트를 사용..

회고 2022.09.13

[Exercism] Raindrops #String #Stringbuffer #immutual

https://exercism.org/tracks/dart/exercises/raindrops Raindrops in Dart on Exercism Can you solve Raindrops in Dart? Improve your Dart skills with support from our world-class team of mentors. exercism.org 주어진 수가 몇으로 나누어지는지에 따라서 다른 소리를 리턴해야하는 문제이다. String에 +를 이용해서 조건에 맞는 경우 소리를 추가하였다. class Raindrops { String convert(int number) { String sound = ''; if (number % 3 == 0) sound += 'Pling'; if (num..

Language/Dart 2022.09.11

[Exercism] Gigasecond #Duration #Named parameter

https://exercism.org/tracks/dart/exercises/gigasecond/iterations?idx=2 Exercism Learn, practice and get world-class mentoring in over 50 languages. 100% free. exercism.org 문제 자체는 정말 단순하게 gigasecond를 더하면 되는데, Duration을 처음 써볼 수 있었다. Duration은 말 그대로 기간을 나타내는 클래스인데, DateTime 클래스와 같이 많이 쓰는 것 같다. Dart에서 마음에 드는 것 중 하나는 named parameter인데, 이렇게 arguments가 어떤 값인지 바로 알 수 있어서 좋다. (자바는 named parameter가 없고, 코틀..

Language/Dart 2022.09.08