하지만 요즘 트렌드(?)로 보면 iOS의 스위프트나 안드로이드 Jetcompose, 리엑트 등 많은 개발 프레임워크나 플랫폼들이 선언형 개발방식을 지향하고 있는것이 사실입니다.
개인적인 생각으로 Flutter에서 장점은
이러한 선언형 UI 방식으로 빠른 화면 구성이 가능합니다.
기존 C#에서 특정 화면에서 컨트롤에 접근해 변경 액션을 취해야 한다면 컨트롤의 고유 id로 접근하여 원하는 속성에 접근하여 액션에 맞게 수정해야 하지만,
Flutter에서는 사용자 액션에 의해 변경이 필요한 일부만 상태를 관리해주고 나머지는 자체 프레임워크에 맡겨 개발자가 고려해야 하는 부분이 줄어 들게 됩니다.
비교적 단일 코드로 모바일, 윈도우App, 리눅스App 까지 UI 호환성을 유지하며 결과를 도출해낼 수 있습니다.
이전 자마린 플랫폼 같은 경우는 iOS, AOS 개별 플랫폼 코드 작업이 많이 개입되는걸로 알 고 있는데
(maui에서는 이런 점이 크게 개선되었죠?)
Flutter에서는 최소 코드로 크로스플랫폼 결과를 쉽게 만들어 낼 수 있습니다.
아무래도 안드로이드 영역의 구글 지원과 인터넷상 많은 래퍼런스 자료들도 장점이라고 생각합니다.
단점으로 보면
화면을 꾸미는 위젯(컨트롤)들의 선언 코드를 세심하게 쪼개지 않으면 가독성이 너무 떨어져서 보기 힘듭니다.
리엑트에서도 해당되지만 상태관리를 제대로 하지 못하면 성능이 심하게 떨어집니다. 항상 개발하면서 같이 고려하며 설계해야 합니다.