Flutter : 새롭게 시작하기

김가영·2021년 5월 9일
0

Flutter

목록 보기
1/5
post-thumbnail

https://flutter-ko.dev/

아주 아주 옛날부터 궁금했던 크로스 플랫폼, Flutter에 도전한다!
크로스 플랫폼은 안드로이드와 iOS, 두가지 OS의 모바일 어플리케이션을 한 번에 만들 수 있는 획기적인 tool이다.

모바일 어플리케이션 뿐만 아니라 하나의 코드로 desktop app(window, mac, linux), web까지 빌드 가능하다. 데스크탑 앱의 경우 베타버전으로 존재하다 올해 3월 3일 공식 발표됐다.


인프런에 올라와있는 권태뿡님의 Flutter + Firebase로 넷플릭스 UI 클론 코딩하기 [무작정 플러터] 라는 강의를 통해 넷플릭스 UI 클론을 진행해봤다. 차례대로 iOS, Android로 빌드한 앱의 캡쳐화면이다.

장점들

개인적으로는 굉장히 만족스러웠다. 아직 클론코딩으로 굉장히 짧게 경험한 게 다이지만 지금까지 내가 경험한 장점은 다음과 같다. 아주 초보적인 안드로이드 네이티브 경험을 기반으로 작성되었다.

  • hot reload: 정말 너무 만족하는 기능. node의 nodemon과 비슷하다. command+s로 저장만 하면 자동으로 build가 된다. 안드로이드 네이티브에도 비슷한 기능이 있지만 수정이 조금만 많아지면 다시 빌드하라는 메시지가 많이 떴는데 플러터에서는 대부분의 수정을 아주 아주 빠르게 build 해준다.

  • widget 기반 : 플러터에서는 모든 것이 widget이라는 기본 단위로 이루어진다. 버튼도, text도, 그걸 감싸는 배경 하나하나도 모두 widget이다. 안드로이드를 할 때는 기본 layout이 있고, 그 안에 Button, TextView 등의 뷰를 추가하는 방식이었기에 코드 재활용 등의 측면에서는 플러터가 더욱 간편하다는 생각이 들었다.

  • ui와 code를 한 번에 : 안드로이드 네이티브의 경우 xml로 기본 UI 화면을 구성하고, kotlin으로 기능을 추가하는 것이 기본이다. 하나의 코드파일에서 여러 xml을 참조하기도 하고, 하나의 xml에서 여러 코드파일을 필요로 하기도 하여 구성이 조금 복잡해진다.
    플러터는 모든 것이 dart로 작성된다. ui와 기능을 한 코드파일에 정리할 수 있기에 기능별로 파일을 분리하는 것이 더욱 간편하다.

  • 친절한 공식문서 : 플러터는 2017년 5월에 발표됐다. 이런 따끈따끈한 프레임워크를 쓸 때는 레퍼런스가 적은 게 가장 큰 걱정인 것 같다. 실제로도 그런 우려를 많이 했다. 그런데! 플러터는 공식문서가 정말 친절하다. 일단 입문자에게는 굉장히 친절하게 구성된 것 같다. 안드로이드 네이티브, iOS 네이티브, 리액트 네이티브 경험자를 위한 플러터 튜토리얼이 따로 존재한다.
    좀 더 복잡한 기능들을 구현하다보면 달라질 수 있겠지만, 일단 입문자로서는 굉장히 친절한 공식문서라고 생각했다.

  • 안드로이드와 iOS를 한 번에 : 플러터를 고른 단 하나의 결정적인 이유. 안드로이드랑 iOS 화면을 동시에 보고 있자면 마음이 벅차진다. 신난다.

  • 생각보다 괜찮은 Web, 데스크탑 앱에 대한 기대 : 사실 웹은 크게 기대하지는 않았는데 생각보다 결과물이 괜찮았다.


코드 수정 전혀 없이 바로 chrome에서 띄운 결과물이다. 모바일을 기준으로 작성되었다보니 desktop에서 보기에는 어색함이 있었지만 모바일 web뷰로 보여주기에는 이보다 좋을 수가 없다.

단점들

아직 제대로 개발을 시작하지 않아 생각나는 단점은 없다. 아마 본격적인 개발을 진행하면서 하나씩 추가될 것 같다.

지금까지 가장 큰 것은

  • 긴 트리 : 플러터는 위젯들이 트리 형태로 존재한다. Row 라는 배열을 시켜주는 위젯 밑에 가운데 정렬을 위한 Center라는 위젯이 있고, 그 안에 Text를 쓸 수 있는 위젯이 존재하는 등의 형태. 그리고 화면 구성을 위한 부분과 기능구현을 위한 코드가 함께 존재하기에 파일이 가독성이 뛰어나지는 않다.

실제로 코드를 작성하면 뭔가 굉장히 많다. 대신 flutter에서는 기본적으로 트리구조를 보여주고, //Text, //Column 등 위젯들이 끝날 때 주석을 자동으로 추가해주어 복잡함을 해결하려고 한다.

일단 아직 겪진 않았지만 걱정되는 점들은

  • 부족한 라이브러리
  • 부족한 레퍼런스

이런거. 뭐 아직 이용하는 사람이 많이 없고, 출시된 지 비교적 얼마 되지 않은 따끈따끈한 프레임워크이기에 걱정되는 문제들인 것 같다.


profile
개발블로그

0개의 댓글