플러터
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
플러터는 구글에서 개발한 UI 소프트웨어 개발 키트(SDK)로, 안드로이드, iOS, 웹, 데스크톱 등 다양한 플랫폼에서 네이티브 컴파일된 애플리케이션을 제작할 수 있게 해준다. 2015년 다트 개발자 서밋에서 처음 공개되었으며, 위젯 기반의 아키텍처를 사용하여 UI를 구성한다. 플러터는 Material Design과 Cupertino 위젯을 제공하여 각 플랫폼에 맞는 디자인을 지원하며, 2018년 플러터 1.0 출시 이후 지속적인 업데이트를 통해 데스크톱 플랫폼 지원을 강화하고 널 안전성(null safety)과 같은 기능을 추가했다. 2024년에는 플러터 커뮤니티 개발자에 의해 플러터의 포크인 Flock이 발표되었다.
더 읽어볼만한 페이지
- 소프트웨어 프레임워크 - 애플리케이션 프레임워크
애플리케이션 프레임워크는 GUI 애플리케이션 개발을 간편하게 하고 코드 재사용성을 높이는 소프트웨어 프레임워크로, MacApp을 시작으로 크로스 플랫폼, 웹 애플리케이션 등 다양한 종류가 있으며 대한민국에서도 스프링 프레임워크를 중심으로 활발히 사용되고 있다. - 소프트웨어 프레임워크 - 랭체인
랭체인은 2022년 해리슨 체이스가 시작한 언어 모델 기반 애플리케이션 개발 프레임워크로, 챗봇, 검색 증강 생성, 문서 자동 요약 등에 활용되며 다양한 데이터 형식과 도구를 지원하고 개발자 커뮤니티의 활발한 참여 속에 2023년 법인 전환 후 투자를 유치했으며 애플리케이션 배포 도구인 랭서브를 출시했다. - 프로그래밍 도구 - SWIG
SWIG는 C/C++ 코드를 다른 프로그래밍 언어에서 사용할 수 있도록 인터페이스를 자동으로 생성해주는 도구로서, 복잡한 데이터 형식 처리, 메모리 관리 등을 지원하며, LLDB, GNU Radio, TensorFlow 등 다양한 프로젝트에서 활용된다. - 프로그래밍 도구 - 소스 코드 편집기
소스 코드 편집기는 구문 강조, 자동 완성, 들여쓰기 등의 기능으로 코드 편집을 용이하게 하고 개발 도구 실행 환경을 제공하며, 텍스트 편집 대신 AST를 조작하는 구조 편집기도 존재한다. - 2017년 소프트웨어 - 알파고 제로
알파고 제로는 인간 기보 없이 강화 학습으로 스스로 바둑을 학습하여 기존 알파고를 능가하는 성능을 보이는 인공지능으로, 인공지능 연구 및 다양한 분야에 응용될 가능성을 제시한다. - 2017년 소프트웨어 - 알파제로
알파제로는 딥마인드가 개발한 인공지능으로, 강화 학습을 통해 체스, 쇼기, 바둑 등에서 인간을 능가하는 실력을 보이며, 자기 대전을 통해 학습하고 딥 러닝을 이용한 강화 학습을 사용하여 인공지능 연구 및 뮤제로 개발에 기여했다.
플러터 - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
이름 | 플러터 |
![]() | |
개발자 | 구글 및 커뮤니티 |
최초 출시 | Alpha (v0.0.6) / |
최신 버전 출시일 | }} |
프로그래밍 언어 | C, C++, Dart |
플랫폼 | Android, iOS, 구글 퓨시아, 웹 플랫폼, 리눅스, macOS, 윈도우 |
장르 | 애플리케이션 프레임워크 |
라이선스 | New BSD License |
웹사이트 | flutter.dev |
기술 정보 | |
사용 언어 | C, C++, Dart |
그래픽 렌더링 엔진 | Skia (C/C++로 작성) |
활용 사례 | |
주요 사용 기업 | 구글 (Google Pay, Google Earth) 알리바바 그룹 바이트댄스 BMW 위챗 Betterment SHEIN |
2. 역사
플러터의 첫 번째 버전은 "Sky"로 알려졌으며 안드로이드 운영체제에서 실행되었다.[30] 2015년 다트 개발자 서밋에서 발표되었으며, 초당 120 프레임으로 일관성 있게 렌더링할 수 있도록 하는 것을 목표로 했다.[30]
2018년 12월 4일, 플러터 1.0이 런던에서 열린 플러터 컨퍼런스에서 출시되었다.[31] 2020년 5월, Dart SDK 버전 2.8과 플러터 1.17.0이 출시되며 Metal API 지원이 추가되었다.[32]
2021년 3월, 구글은 온라인 플러터 인게이지 이벤트에서 플러터 2를 출시했다.[7][33] 2022년 5월, 플러터 3과 Dart 2.17이 출시되며 모든 데스크톱 플랫폼을 안정적으로 지원하게 되었다.[36]
2024년 10월, 여러 플러터 커뮤니티 개발자가 플러터의 포크인 ''Flock''을 발표했다. ''Flock''은 업스트림 코드 베이스에서 이루어진 모든 변경 사항과 동기화되면서 기여하기 더 쉽도록 만들어졌다.[37][38]
2. 1. 개발 초기
플러터의 최초 버전 코드명은 "Sky"(스카이)이며 안드로이드 운영 체제에서 실행되었다. 2015년 다트 개발자 서밋에서 초당 120 프레임으로 꾸준히 렌더링이 가능하도록 의도되었다고 발표되었다.[60] 2018년 12월 4일, 상하이의 구글 개발자의 날 키노트에서 플러터 1.0 전 마지막 대형 릴리스인 플러터 릴리스 프리뷰 2가 발표되었고, 같은 날 플러터 라이브 이벤트에서 프레임워크의 최초 안정판인 플러터 1.0이 공개되었다.[61]2. 2. 버전 1.0 출시 및 발전
플러터의 최초 버전 코드명은 "Sky"(스카이)이며 안드로이드 운영 체제에서 실행되었다.[60] 2015년 다트 개발자 서밋에서 공개되었으며 초당 120 프레임/초로 꾸준히 렌더링이 가능하도록 의도되었다고 언급되었다.[60] 2018년 12월 4일, 런던에서 열린 플러터 컨퍼런스에서 프레임워크의 최초 안정판인 플러터 1.0이 공개되었다.[61][31]플러터 1.0에서는 iOS 스타일 위젯 키트인 Cupertino Theme를 대폭 강화하고("Pixel-Perfect iOS App"), 구글이 제공하는 mBaaS 서비스인 Firebase를 지원하며, Dart 2.1 지원, 바이너리 사이즈 최적화 등, 릴리스 프리뷰 시에 구현된 기능의 버그 수정 등이 이루어졌다.[47]
2019년 2월에는, 기존 애플리케이션의 일부에서 플러터를 동작시키는 "Add to App", 플러터 상에서 안드로이드 및 iOS의 GUI 컨트롤을 동작시키는 "Platform Views", 윈도우 및 macOS, 리눅스 등의 데스크톱 플랫폼용 구현 "Flutter Desktop Embedding", JavaScript로 컴파일하여 웹 플랫폼용 구현 "Hummingbird" 등의 개발을 진행하고 있다는 내용이 발표되었다.
2020년 5월 6일, Dart SDK 버전 2.8과 플러터 1.17.0이 출시되었으며, Metal API 지원이 추가되었다.[32]
2021년 3월 3일, 구글은 온라인 플러터 인게이지 이벤트에서 플러터 2를 출시했다.[7][33] 이 업데이트로 HTML 기반 렌더러 외에 웹용 캔버스 기반 렌더러와 윈도우, macOS, 리눅스에 대한 초기 액세스 데스크톱 애플리케이션 지원이 추가되었다.[33][7] 또한 널 안전성 지원을 포함하는 Dart 2.0과 함께 제공되었다.[7][34]
2021년 9월 8일, Dart SDK 버전 2.14와 플러터 버전 2.5가 릴리스되었다. 업데이트에는 안드로이드의 풀 스크린 모드와 Material You라고 불리는 구글의 최신 버전의 머티리얼 디자인이 포함되었다. Dart에는 최신 린트 조건이 표준화되어 기본 조건으로 사전 설정되었고, Dart의 Apple Silicon 지원이 stable 상태가 되었다는 두 가지 새로운 업데이트가 있었다.[50][51]
2022년 5월 12일, 플러터 3과 Dart 2.17이 출시되었으며, 모든 데스크톱 플랫폼을 안정적으로 지원했다.[36]
3. 프레임워크 아키텍처
플러터 프레임워크는 Dart 플랫폼, 플러터 엔진, 파운데이션 라이브러리(Foundation library), 디자인 특화 위젯으로 구성된다.
플러터 앱은 Dart 언어로 작성된다. 모든 플랫폼의 플러터 앱 릴리스 버전은 AOT(Ahead-of-time) 컴파일을 사용하지만, 코드가 소스 간 컴파일러를 통해 JavaScript 또는 WebAssembly로 JavaScript 변환되는 웹에서는 예외이다.[22][23] 플러터는 Dart의 [https://pub.dev Pub] 패키지 관리자 및 소프트웨어 저장소를 상속받아 사용자가 사용자 지정 패키지 및 플러터 관련 플러그인을 게시하고 사용할 수 있도록 한다.[24]
Dart로 작성된 Foundation 라이브러리는 플러터를 사용하여 애플리케이션을 구성하는 데 사용되는 기본 클래스 및 함수, 예를 들어 엔진과 통신하는 API를 제공한다.[29][25]
주로 C++로 작성된 플러터의 엔진은 구글의 Skia 그래픽 라이브러리 또는 iOS에서 기본적으로 활성화되고 안드로이드에서 베타 버전으로 제공되는 사용자 지정 "Impeller" 그래픽 레이어를 사용하여 저수준의 렌더링 지원을 제공한다.[26][27][28] 이 엔진은 접근성, 파일 및 네트워크 I/O, 네이티브 플러그인 지원 등과 같은 기능을 구현하기 위해 플랫폼별 SDK (예: Android 및 iOS에서 제공하는 SDK)와 인터페이스한다.[29]
3. 1. 위젯 기반 UI 구성
플러터 프로그램의 기본 구성 요소는 "위젯"이며, 위젯은 다른 위젯으로 구성될 수 있다.[17] 위젯은 React와 유사한 구현 방식으로 UI 요소의 로직, 상호 작용, 디자인을 설명한다.[17] React Native 및 Xamarin과 같은 다른 크로스 플랫폼 툴킷과 달리, 플러터는 위젯을 픽셀 단위로 직접 렌더링한다.플러터에는 "상태가 없는(stateless)" 위젯과 "상태가 있는(stateful)" 위젯 두 가지 유형이 있다. 상태가 없는 위젯은 입력이 변경될 때만 업데이트되므로 화면의 다른 요소가 변경될 때 다시 빌드할 필요가 없지만, 상태가 있는 위젯은 `setState()` 메서드를 호출하여 내부 상태를 업데이트하고 다시 그릴 수 있다.[17][18]
위젯은 플러터 애플리케이션을 구성하는 주요 방법이지만, 캔버스에 직접 그리는 방식으로 이를 우회할 수도 있다. 이 기능은 때때로 플러터에서 게임 엔진을 구현하는 데 사용되었다.[19]
플러터 프레임워크에는 특정 디자인 언어에 맞는 두 세트의 위젯이 포함되어 있다. Material Design 위젯은 구글의 디자인 언어를 구현하고, ''Cupertino'' 위젯은 애플의 iOS 인터페이스 지침을 구현한다.[20][29] 플러터는 개발자가 두 플랫폼 모두에서 위젯 집합을 사용할 수 있도록 하며, 안드로이드에서 Cupertino 위젯을 사용할 수 있다.
4. 디자인투코드(Design-to-code)
디자인투코드(Design-to-Code)란 피그마(프로그램)와 같은 디자인 파일을 코드로 변환하는 것을 의미한다.
피그마의 디자인 협업 환경 혁신에 이어 UI/UX 개발 프로세스의 혁신이 일어날 것으로 예상된다. 대표적인 서비스형 소프트웨어로는 [https://function12.io 펑션투웰브]가 있다.
5. Hello World 예시
dart
import 'package:flutter/material.dart';
void main() => runApp(HelloWorldApp());
class HelloWorldApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Hello World App',
home: Scaffold(
appBar: AppBar(
title: Text('Hello World App'),
),
body: Center(
child: Text('Hello World'),
),
),
);
}
}
```
이 코드는 플러터(Flutter)를 사용하여 "Hello World"를 출력하는 가장 기본적인 예제이다.
- `import 'package:flutter/material.dart';`: 플러터의 Material Design 위젯들을 사용하기 위한 패키지를 가져온다.
- `void main() => runApp(HelloWorldApp());`: `HelloWorldApp` 클래스의 인스턴스를 생성하여 앱을 실행한다.
- `HelloWorldApp` 클래스: `StatelessWidget`을 상속받아 UI를 구성한다.
- `build` 메서드: 앱의 UI를 정의한다.
- `MaterialApp`: 앱의 기본적인 Material Design 레이아웃을 설정한다.
- `title`: 앱의 제목을 설정한다.
- `home`: 앱의 홈 화면을 설정한다.
- `Scaffold`: AppBar, body 등 기본적인 위젯들의 레이아웃을 구성한다.
- `appBar`: 앱 상단에 표시되는 AppBar를 설정한다.
- `title`: AppBar의 제목을 설정한다.
- `body`: 앱의 본문 내용을 설정한다.
- `Center`: 자식 위젯을 화면 중앙에 배치한다.
- `child`: 화면에 표시할 텍스트를 설정한다.
참조
[1]
웹사이트
Release v0.0.6: Rev alpha branch version to 0.0.6, flutter 0.0.26 (#10010) · flutter/flutter
https://github.com/f[...]
2018-08-08
[2]
웹사이트
FAQ - Flutter
https://flutter.dev/[...]
2018-08-08
[3]
웹사이트
Google starts a push for cross-platform app development with Flutter SDK
https://arstechnica.[...]
2021-06-11
[4]
웹사이트
Google's "Fuchsia" smartphone OS dumps Linux, has a wild new UI
https://arstechnica.[...]
Ars Technica
2018-03-18
[5]
웹사이트
With Flutter, Google Aims Dart to Mobile App Cross-Development
https://www.infoq.co[...]
2022-03-17
[6]
웹사이트
Google announces Flutter 1.0, the first stable release of its cross-platform mobile development toolkit
https://www.androidp[...]
2022-03-17
[7]
웹사이트
Google's multi-platform app framework Flutter reaches version 2, expands to the web
https://www.theregis[...]
2021-03-03
[8]
웹사이트
Going global at Google Pay with Flutter
https://flutter.dev/[...]
2024-04-02
[9]
웹사이트
Google Earth gets a redesigned Android app with Projects support, removes Voyager
https://9to5google.c[...]
2023-09-26
[10]
웹사이트
Check out the new @googleearth for iOS, Android, and web with UI built using Flutter, all from a single codebase
https://twitter.com/[...]
2024-04-02
[11]
웹사이트
Google's Flutter 3 adds support for macOS and Linux desktop apps
https://techcrunch.c[...]
2022-05-11
[12]
웹사이트
Increasing productivity by 33% at ByteDance with Flutter
https://flutter.dev/[...]
2024-04-02
[13]
웹사이트
Google's cross-platform Flutter UI toolkit hits version 1.0
https://techcrunch.c[...]
2018-12-04
[14]
웹사이트
Alibaba scales China's largest second-hand marketplace with Flutter
https://flutter.dev/[...]
2024-04-02
[15]
웹사이트
Flutter architectural overview
https://docs.flutter[...]
2024-07-26
[16]
웹사이트
Apps made with Google's Flutter may fritter away CPU cycles. Here's what the web giant intends to do about it
https://www.theregis[...]
2021-11-12
[17]
서적
Flutter in action
Manning Publications Co
2020
[18]
웹사이트
Introduction to widgets
https://docs.flutter[...]
2022-10-06
[19]
웹사이트
Flame
https://flame-engine[...]
2022-10-06
[20]
웹사이트
Google reports 80% spike of Flutter-built apps in Play Store as 1.20 is released
https://www.theregis[...]
2020-08-05
[21]
웹사이트
Flutter's Compilation Patterns
https://proandroidde[...]
2018-12-06
[22]
웹사이트
Google's Flutter showcases new graphics capabilities, WebAssembly and RISC-V support
https://techcrunch.c[...]
2023-01-25
[23]
웹사이트
Landing Flutter 3.22 and Dart 3.4 at Google I/O 2024
https://medium.com/f[...]
2024-05-17
[24]
웹사이트
Using packages
https://docs.flutter[...]
2022-10-06
[25]
웹사이트
foundation library - Dart API
https://docs.flutter[...]
2017-12-13
[26]
웹사이트
Flutter architectural overview
https://docs.flutter[...]
2024-07-26
[27]
웹사이트
Impeller rendering engine
https://docs.flutter[...]
2024-05-17
[28]
웹사이트
Google releases Flutter 3.7, teases future of app development framework
https://9to5google.c[...]
2023-01-25
[29]
웹사이트
Technical Overview - Flutter
https://flutter.dev/[...]
2017-12-13
[30]
웹사이트
Google's Dart language on Android aims for Java-free, 120 FPS apps
https://arstechnica.[...]
2017-12-13
[31]
웹사이트
Google bridges Android and iOS development with Flutter 1.0
https://arstechnica.[...]
2018-12-04
[32]
웹사이트
Google releases Flutter 1.17 and Dart 2.8 stable SDKs for app development
https://www.xda-deve[...]
2020-05-06
[33]
웹사이트
Version 2 of Google's Flutter toolkit adds support for desktop and web apps
https://techcrunch.c[...]
2021-03-03
[34]
웹사이트
Dart 2.12 has been released, with null-safety and C interoperability
https://www.xda-deve[...]
2021-03-03
[35]
웹사이트
Google's Dart language soon won't take null for an answer
https://www.theregis[...]
2022-12-09
[36]
웹사이트
Google's Flutter app development framework now stable across platforms
https://www.theregis[...]
2022-05-11
[37]
웹사이트
Google's Flutter UI Toolkit Forked As Flock
https://www.phoronix[...]
2024-10-30
[38]
웹사이트
Google's Flutter framework has been forked
https://www.infoworl[...]
[39]
웹사이트
Release v0.0.6: Rev alpha branch version to 0.0.6, flutter 0.0.26 (#10010) · flutter/flutter
https://github.com/f[...]
2022-03-22
[40]
웹사이트
FAQ
https://flutter.io/f[...]
flutter.io
2018-07-29
[41]
웹사이트
Google starts a push for cross-platform app development with Flutter SDK
https://arstechnica.[...]
2021-06-11
[42]
웹사이트
Google's "Fuchsia" smartphone OS dumps Linux, has a wild new UI
https://arstechnica.[...]
Ars Technica
2021-06-15
[43]
웹사이트
Googleの大きな野望? 謎のOS「Fuchsia」
https://cloud.watch.[...]
クラウド Watch
2018-07-29
[44]
웹사이트
Google releases Flutter app development SDK version 1.0, no longer in beta
https://9to5google.c[...]
2018-12-05
[45]
웹사이트
Version 2 of Google's Flutter toolkit adds support for desktop and web apps
https://social.techc[...]
2021-03-06
[46]
웹사이트
Google’s Dart language on Android aims for Java-free, 120 FPS apps
https://arstechnica.[...]
Ars Technica
2018-07-29
[47]
웹사이트
Flutter 1.0: Google’s Portable UI Toolkit
https://developers.g[...]
Tim Sneath
2018-12-05
[48]
웹사이트
Version 2 of Google's Flutter toolkit adds support for desktop and web apps
https://social.techc[...]
2021-03-06
[49]
웹사이트
Migrating to null safety
https://dart.dev/nul[...]
2022-02-04
[50]
웹사이트
What’s new in Flutter 2.5
https://medium.com/f[...]
2022-02-04
[51]
웹사이트
Flutter 2.5.0 release notes
https://docs.flutter[...]
2022-02-04
[52]
웹사이트
Technical Overview - Flutter
https://flutter.dev/[...]
2017-12-13
[53]
웹사이트
Technical Overview
https://flutter.io/t[...]
flutter.io
2018-07-29
[54]
웹사이트
foundation library
https://docs.flutter[...]
flutter.io
2018-07-29
[55]
웹사이트
Material Components Widgets
https://flutter.io/w[...]
flutter.io
2018-07-29
[56]
웹사이트
Cupertino (iOS-style) Widgets
https://flutter.io/w[...]
flutter.io
2018-07-29
[57]
웹인용
Release v0.0.6: Rev alpha branch version to 0.0.6, flutter 0.0.26 (#10010) · flutter/flutter
https://github.com/f[...]
2018-08-08
[58]
웹인용
FAQ - Flutter
https://flutter.io/f[...]
2018-08-08
[59]
웹인용
Google's "Fuchsia" smartphone OS dumps Linux, has a wild new UI
https://arstechnica.[...]
Ars Technica
[60]
웹인용
Google's Dart language on Android aims for Java-free, 120 FPS apps
https://arstechnica.[...]
Ars Technica
2015-05-01
[61]
웹인용
Speed Up Native Development As Google Flutter Comes Out Of Beta
https://appetiser.co[...]
Appetiser Apps
2018-12-21
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com