ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • FLutter 개인 정리
    flutter 2023. 4. 11. 15:32
    반응형

    Flutter

    플러터 간단 소개

    플러터는 구글이 구현한 크로스 플랫폼 프레임워크 임.

    초기에 안드로이드와 ios 앱만 지원했지만 현재는 웹사이트, 맥OS, 윈도우, 리눅스 데스크톱 앱까지 지원함

    플러터로 새발하면 한소스코드로 수많은 플랫폼을 대응 할수가 있어 개발 비용을 아끼고 관리 부담을 줄일수 있음

    기존 리액트 네이티브가 장악하던 크로스 플랫폼 앱 개발프레임 워크 시장을 플러터가 상당부분 장악

    상대적으로 다루기 쉽다는 점과 크로스 플랫폼 호환성이 상당히 자연스럽다는점, 두들에서 강력하게 밀고 있는 프로젝트라는점을 종합했을때 앞으로 기대되는 프레임워크라고함

     

    https://trends.google.co.kr/home?geo=KR&hl=ko 

     

    Google 트렌드

    트렌드 활용법 언론사, 자선단체 등 전 세계에서 Google 트렌드를 어떻게 사용하고 있는지 확인해보세요.

    trends.google.co.kr

    지난 5년동안 쿠글 트렌드에서 분석안 Flutter VS RN 비교 (23.04.10일자 기준)

    플러터는 플랫폼 건의 이질감이 적은 크로스 플릿폼 프레임 워크임

    기존 크로스 플랫폼 프레임워크들은 코드를 네이티브 프레임워크 코드로 전환하는데 중점을 줌

    하지만 플러터는 스키아엔진이라는 2D 렌더링 엔진과 직접 통신을 하기 때문에 스키아 엔진이 실행되는 플랫폼에서는 똑같은 API를 사용해서 프로그래밍을 할수 있음.

    이런 장점 덕분에 플러터 프레임워크는 어떤 플랫폼이든 일관된 UI를 제공할수 있음

    그래서 타 크로스 플랫폼 프레임워크보다 플렛폼별 UI 디버깅 부담이 현저히 적음

     


    ※ 플러터 프레임워크는 세 계층으로 나누어져있음

    1. Embedder

    iOS - Objective-C, aos - Java 및 C++, Windows - C++ 등 각 플랫폼에 적합한 언어로 작성되어있는 부분으로, 각 플랫폼의 네이티브 어플리케이션과 동일한 방식으로 패키징된다.

    2. Engine

    플러터의 핵심은 대부분 C++로 작성되어있으며, Skia라고 하는 그래픽 엔진으로 렌더링되며, 이외에도 텍스트 레이아웃, 파일 및 네트워크I/O, 접근성 지원, 플러그인 아키텍처 등 플러터의 핵심 API의 저수준 구현을 제공한다.

    3. Framework

    실제 플러터를 이용해 개발하는 개발자들이 접하게 되는 부분으로, 구글은 여기에 Dart 언어를 선택하였다. 대부분 일반적으로 사용되는 추상화를 제공하며, 애니메이션, 페인팅, 제스처 등을 제공한다.

    이렇게 3계층으로 나뉘고 잘 모듈화된 아키텍처 덕분에 플러터는 쉽게 여러 플랫폼을 지원하고 일관된 API 및 개발 경함을 제공해줌

    플러터와 리엑트네이비트 플렛폼 통신 구조.

    코드팩토리의 플러터 프로그래밍 책 참조

    대부분 크로스 플랫폼은 웹뷰나 각 플렛폼 UI 라이브러리를 사용

    플러터는 웹뷰를 사용하지 않고 직접 스키아 엔진을 사용해 화면에 UI를 그려줌

    이대 새로 렌더링이 필요한 위젯들만 랜더링 하지 때문에 다른 크로스 플렛폼 앱 개발 프레임워크 보다 상당히 높은 퍼퍼먼스를 선보임

     


    프로젝트 구조 이해하기

    1. 프로젝트를 구성하는 폴더
    2. 프로젝트를 구성하는 파일

    .idea : 개발 도구에 필요한 설정

    .android : 안드로이드 네이티브 코드를 작성하는 부분

    .build : 빌드시 생성되는 파일

    .ios : IOS 네이티브 코드를 작성하는 부분

    .lib : 다트 코드를 작성하는 부분

    .test : 테스트 코드를 작성하는 부분

    .gitgnore : Git 설정 파일. 버전 관리시 무시할 파일 규칙 작성 .metadata : 프로젝트가 관리하는 파일. 임의로 수정하지 않음 .packages : 각종 패키지 정보. 임의로 수정하지 않음 flutter_app.iml : 개발 도구에 필요한 설정 파일. 임의로 수정하지 않음 pubspeclock : 패키지 매니저가 이용하는 파일. 임의로 수정하지 않음 pubspec.yaml : 패키지 매니저가 이용하는 파일 README.md : 프로젝트 설명을 작성하는 파일

    반응형

    'flutter' 카테고리의 다른 글

    receive_sharing_intent 환경 셋팅 관련 IOS 오류  (0) 2023.05.11
    위젯(Widget) 개인 정리  (0) 2023.04.11
    Dart 개인정리  (0) 2023.04.11
    flutter Version 3.7대 오류  (0) 2023.03.14
    flutter 3.7 버전 오류  (0) 2023.03.06

    댓글

Designed by Tistory.