Flutter는 Google에서 개발 및 지원하는 오픈 소스 프레임워크입니다. 프런트엔드 및 풀 스택 개발자는 Flutter를 사용해 다수의 플랫폼에 대한 애플리케이션의 사용자 인터페이스(UI)를 단일 코드 베이스로 구축합니다.
Flutter가 2018년에 출시되었을 때는 주로 모바일 앱 개발을 지원했습니다. 이제 Flutter는 iOS, Android, 웹, Windows, MacOS, Linux의 여섯 가지 플랫폼에 대한 애플리케이션 개발을 지원합니다.
크로스 플랫폼 기반이기때문에 당연하게도 개발기간이 줄어들고 원래 IOS, AOS, WEB 모두 지원하게끔 개발하려면 각 개발팀이 필요했을테지만 flutter를 잘 사용하기만 한다면 이를 줄여낼 수 있기때문에 비용에서도 이점이 있다.
이런 비용에서의 이점을 경영자들은 "생산성증가"라는 말로 포장한다. (농담입니다.)
여기까지만 들으면 정말 낭만있는 프레임워크가 아닐까 싶다
근데 수반하는 단점도 장점만큼 치명적이다..
당연하게도 일반 네이티브 앱 보다 용량이 크다는 단점이 있고
구글이 이 사업을 포기하면 망한다..
(구글은 사업 손절치는대에 있어서 굉장히 선수라더라)
플러그인 지원을하지 않으면 네이티브 개발을 해야한다.
어떤 앱을 만들지는 모르겟으나 그 기능들이 네이티브에 치중되어 있다면 플러터의 장점 역시 사라질것이다.
Dart가 기존 C언어 문법과 거의 같다고 하던대 방식은 또 싱글 쓰레드의 비동기처리를 지원한다. 처음 개발하다가 이때문에 문제가 생겨서 조금 고생했었다.. 아무튼 언어 자체는 친숙할 수 있었지만 공부가 필요한건 어쩔 수 없다. 처음보는 문법들이 있었는데 그중에 하나를 대표적으로 설명하자면
Dart 자체의 변수들은 기본적으로 null 값을 넣을 수 없다.
그래서 이때 사용할 수 있는것이 ? 키워드 인대
변수 선언 시
int? a = 15;
이런식으로 선언하게 되면 a의 값을 null로써도 사용 가능한거다
이 외에도 _키워드라던지 특이한것들이 많아서 다른언어의 경험이 있더라도 꼭 짚고 넘어가야하는 부분들이 있는 듯 하다.
또한 싱글 쓰레드 방식의 비동기 처리를 지원한다고 한다. 이는 JS와 굉장히 비슷하다.
react-native는 js 기반의 개발자라면 좀 더 친숙하게 다가올것이라고 생각한다.
둘의 장,단점에는 무엇이 있을까 ?
내 생각에는 결국 flutter 하나만 공부해서는 먹고살기는 어렵다. 결국, native개발이 필요할것이고 flutter 이후 native 하나를 더 붙여서 공부하는게 좋을듯 하다.