티스토리 뷰

반응형

회사에 Fluter 관련 책들이 4권 있는 것을 발견했다.  평소에 다 아는 것이겠지 하고 무시하다가 , 요근래 한번 읽어 보자 하는 마음이 생겼다. 

 

그 첫번째가 "모바일 앱 개발을 위한 다트 & 플러터 - 서준수 저" 이다. 2020년 10월에 출판된 것으로 설치 설명에서 확인해보니 Flutter 1.20.2 버전을 설치하고 있다. 지금은 3.10 이 넘어갔으니...책속의 내용과 다른 부분이 있을 것이라는 것을 염두해 두고 보았다. 

 

플러터 개요, 다트 문법, 위젯 개념, 기본 위젯 설명, 레이아웃 구성, 화면 전환 상태 관리, 애니메이션, 실전 프로젝트 의 내용으로 구성 되어있는데 대략 300페이지가 안 된다. 

 

찬찬히 읽어보았을 때, 대부분의 내용이 내가 알고 있는 것이긴 했다. 내가 사용하지 않아서 잘 몰랐던 부분을 몇 가지 알 수 있었다. 하지만 비기너의 책이라서 그런지 그에 대한 궁금증이 완벽히 해결되지는 않아, 다음 책에서는 이런 내용이 나올때 찬찬히 잘 읽어봐야겠다는 생각이 들었다.   

 

읽고나서 보니 대부분이 아는 내용이라 3시간이내에 볼 수 있었고, 내가 부족한 부분을 몇가지 알게 되어서 좋은 시간이었다. 이제 두번째 책을 볼 차례다~!

 

몰랐거나, 이해가 부족한 부분

1. isolate 

isolate는 다트의 모든 코드가 실행되는 공간이다. 싱글 스레드를 가지고 있고 이벤트 루프를 통해 작업을 처리한다. 기본 isolate인 main isolate 는 런타임에 생성된다. 비록 싱글 스레드이지만 다트가 자체적인 비동기 프로그래밍을 지원하기 때문에 비동기 작업도 이벤트 루프(이벤트 큐에 쌓여있는 작업들을 오래된 순으로 하나씩 가져와서 처리하는 역할)에 의해서 적절히 처리된다. 또한 main isolate에서 무거운 작업으로 인해 반응성이 떨어진다면 추가로 isolate를 생성할 수 있다. 그러면 스레드가 2개가 되는 것이다. 다만 기존의 언어에서 사용하는 스레드와 차이점이 있다. 

자바 등의 다른 언어에서 사용하는 스레드는 다음과 같이 스레드가 서로 메모리를 공유하는 구조이다. 하지만 isolate의 스레드는 자체적으로 메모리를 가지고 있다. 따라서 새로운 isolate를 생성하면 해당 isolate에 별도의 고유한 메모리를 가진 스레드가 하나 더 생기는 것이다. 즉, 메모리 공유가 되지 않는다. 따라서 두 isolate가 함께 작업하려면 message를 주고 받아야만 가능하다. 

추가로 isolate들 간의 메모리 공유가 없고, message를 주고 받아야 한다면 message 에 대한 제약(포멧, 크기 등)이라던가, 두 isolate 간의 데이터를 주고 받을 수 있는 속도의 한계 때문에 적용가능성의 제한이 생기지는 않는지?  

 

 

2. then(onError:(){}) 와 then().catchError 의 차이점

onError와 catchError 는 에러를 처리한다는 관점에서 역할은 동일하지만 차이점이 있다. onError 는 future에서 발생한 에러만 처리할 수 있다. 반면, catchError는 then()의 첫번째 인자인 익명 함수 내부에서 발생한 에러까지 처리할 수 있다. 

 

3. 마지막 챕터인 실전 프로젝트에서 만드는 '알람 및 날 씨 브리핑 앱'에서..

알람의 경우, 앱을 종료하거나 백그라운드 상태로 되어있더라도 알람 시간이 되었을 때 사용자에게 알림을 알려야 한다. 이 책에서는 이 기능을 위해 foreground_service 패키지를 사용하고 AndroidManifest 파일을 수정한다. 포그라운드 서비스를 생성하면 뒤로가기나 최근 앱 목록에서 앱을 종료시켜도 백그라운드에서 서비스가 계속 동작하기 때문에 알람 시간이 되면 알람이 동작한다. 

 

알람이 울렸을 때 알람 종료 화면을 호출하는 부분의 구현에서, 앱이 켜져 있는 상태라면 단순히 Navigator르 이용하면된다. 하지만 홈화면으로 나간 상태일 때는 Intent를 이용해야 한다. Intent는 안드로이드 네이티브에서 다양한 역할을 하는데 주로 화면 이동 및 데이터 전달하는데 많이 쓰인다. 여기서도 사용하는 용도는 이동의 한 범위이다

Android native를 사용해보지 않아서 Intent 를 사용해본 적이 없다. flutter 에서 구현하려는 기능이 package로 만들어 진게 없다면 내가 직접 구현해야 할때가 올텐데 이때 Intent 등을 이용해서 system 과 데이터를 주고 받아야 한다. 꼭 공부해야하는 부분이다. 

 

 

반응형

'앱 개발 > ' 카테고리의 다른 글

오준석의 플러터 생존코딩  (0) 2023.09.13
플러터 앱 개발 첫걸음  (0) 2023.09.09
클린 아키텍처  (0) 2023.02.11
실용주의 프로그래머  (4) 2023.01.28
오브젝트 (코드로 이해하는 객체지향 설계)  (0) 2022.07.02
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함