티스토리 뷰

앱 개발/책

플러터 앱 개발 첫걸음

낭초비 2023. 9. 9. 20:43
반응형

 이번책은 해외 도서 번역서다. 국내에서는 2020년 6월에 출판되었지만 원서는 2019년에 출판 되었다. 기술서 중에서도 IT분야는 특히나 변화가 빨라서 4년전 책이라는 것을 알고서 읽어야 하나하고 잠시 고민을 했지만 읽어보았다. 유튜브 보면서 노는 3시간보다 이 책을 읽는게 더 내게 도움이 될꺼라는 생각에. 

 

읽어보니 이번에 보았던 '모바일 앱 개발을 위한 다트 & 플러터' 보다 더 유익했다. 글의 흐름도 더 자연스럽고 내용도 더 알 차게 느껴졌다. 

 

 

 

기억해야할 부분 

 

analysis-options.yaml 파일은 꼭 필요한 파일은 아니지만 있으면 더 나은 코드를 작성할 수 있다. 이 파일은 코드를 작성할 때 정적 분석이라고도 하는 린트(lint)를 수행하라고 IDE에 알리는 역할을 한다. analysis-options.yaml 이 있으면 IDE는 작성한 코드가 모범 사례에 어긋날 때마다 경고를 표시한다. 이 파일은 처음부터 작성하지 말고 다른 사람이 작성한 파일을 기본으로 수정하길 권한다. 

https://github.com/flutter/plugins/blob/master_archive/analysis_options.yaml 

은 플러터 커뮤니티에서 많이 상요하는 파일의 하나이다. 이 파일은 강력한 규칙을 담고 있다. 해제하고 싶은 규칙이 있다면 해당 행을 삭제하거나 주석처리 해야 한다. 린트 규칙에 관한 자세한 설명은 https://dart.dev/tools/linter-rules를 참고하면된다. 

 

발생한 이벤트는 모두 별도의 스레드에서 실행하므로 Async<> 객체로 리턴해도 전혀 문제없다. 따라서 이벤트 핸드러 함수에 async를 붙여놓고 마음껏 await를 남발해도 괜찮다

 

MaterialApp은 중요한 위젯이지만 엄밀히 말하면 시각화에 관여하지 않기 때문에 사용자의 눈에 절대 보이지 않는 위젯이다. 이 위젯은 앱 전체를 감싸므로 앱을 대표할 이름(타이틀)을 붙일 수 있다. OS가 앱을 백그라운드로 보낼 때 나타나는 이름이기도 하다. 또 MaterialApp은 앱에 폰트, 크기, 색상 등 기본 테마를 적용할 수 있는 위젯이다. 또 route를 지정하는 곳이기도하다. 

MaterialApp 의 "Material"은 구글 안드로이드와 같은 머티리얼 디자인을 말한다. 하지만 분명 잘못 지은 이름이다. MaterialApp은 iOS 앱을 포함해서 모든 앱의 루트 위젯이다. MaterialApp 때문에 앱이 더 안드로이드 다워지거나 덜 iOS 다워지지는 않는다. (이부분 보고...와 이런 것도 캐치해냈네...하는 생각이 들었다. ㅎ)

 

MaterialApp 위젯은 눈에 보이지 않는 바깥 틀을 이루고 Scaffold 위젯은 눈에 보이는 안쪽 틀을 이룬다. 스캐폴드의 유일ㅇ한 목적은 앱의 눈에 보이는 요소를 구조적으로 배치해서 다른 수 많은 앱처럼 예측할 수 있고 편리한 레이아웃을 제공하는 데 있다.

 

RenderBox 와 BoxConstraints 의 값은 모두 기기에 따라 달라지는 픽셀 단위다. iOS 개발자는 포인트라 부르고 안드로이드 개발자는 밀도 독립적 픽셀(DP, Density-independent Pixel)이라 부르는 단위다. 

 

때때로 기기가 가로 화면일 때 위아래(Column)로 배치하고 세로 화면일 때 양옆으로 배치하고 싶은 위젯이 있을 수 있다. 즉 위젯을 때로는 Row에 넣고 때로는 Column에 넣고 싶을 수 있다. 이럴 땐 가로, 세로로 모두 배치할 수있는 Flex 위젯을 사용한다. Flex 위젯에는 orientation 속성이 있다. 

 

Container의 유일한 목적은 담고 있는 위젯에 레이아웃과 스타일을 적용하는 것이다. 

 

테마의 스타일을 적용할 때 몇가지 속성을 바꿔서 적용하고 싶다면 copyWith()를 사용한다.

 

async는 플러터의 build() 메서드에는 사용할 수 없지만 onPress 같은 이벤트에는 사용할 수 있다. 따라서 이렇게 async-await-async-await를 되풀이하는 문제를 해결하려면 비동기적인 작업은 이벤트로 돌리려고 노력해야 한다. 

 

await가 아닌 Future의 .then() 메서드를 사용한 이유는 build() 메서드는 async 로 표시할 수 없기 때문이다. (statefull widget 의 initState() 메서드도 async를 쓸 수 없어서 이렇게 해야함).then()을 사용하면 async 없이 Future 를 처리할 수 있다. 

 

Flutter를 계속 공부를 이어나갈 수 있는 몇가지 방법을 추천하려한다. 

플러터 커뮤니티에 참여한다. 첫걸음으로 슬랙 채널 http://flutterStudyGroup.slack.com 에 가입하고 http://medium.com/flutter-community 의 게시물을 읽기 바란다. 수요일마다 줌을 통해 http://tinyurl.com/humpdayqanda 에서 열리는 험프 데이 Q&A에 참여하면 전세계의 플러터 개발자와 실시간으로대화를 나누거나, 질문을 하거나, 심지어 페어 프로그래밍으로 문제를 해결할 수 있다. 세계 최고의 플러터 개발자가 플러터에 관한 문제를 도와주려고 시간을 보내는 곳이다. 또 플러터 기사, 동영상, 튜토리얼이 가득한 무료 이메일 뉴스레터 두가지의 구독을 권한다. http://bit.ly/subscribe_to_flutter_weekly 에서 구독할 수 있다. 플러터 프레스 위클리는 정보를 좀 더 선별해서 공유하기 때문에 소식의 수는 적다. 플러터 프레스 위클리는 http://bit.ly/subscribe_to_flutter_press_weekly 에서 구독할 수 있다.

구글의 플러터 팀도 멋진 자료를 제공한다. http://flutter.dev/docs 의 플러터 문서는 훌륭한 출발점이다. 유튜브 채널인 http://bit.ly/flutter_youtube_channel 의 구독도 권한다.  

 

 

 

 

반응형

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

Do it! 플러터 앱 프로그래밍  (0) 2023.09.17
오준석의 플러터 생존코딩  (0) 2023.09.13
모바일 앱 개발을 위한 다트 & 플러터  (2) 2023.09.09
클린 아키텍처  (0) 2023.02.11
실용주의 프로그래머  (4) 2023.01.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함