Flutter는 모바일 애플리케이션을 만들기 위한 UI 기반 도구입니다.Flutter를 사용하여 단일 프로그래밍 언어와 단일 코드베이스로 고유하게 컴파일된 모바일 애플리케이션을 만들 수 있습니다.Flutter에서 코딩할 수 있는 올바른 기술 세트를 사용하여 빠르고 멋진 모바일 애플리케이션을 개발할 수 있습니다.Google에서 프레임워크를 개발했으며 코드는 오픈 소스입니다.Flutter 자체는 언어가 아니며 코딩을 위해 Dart 언어를 사용합니다.
Flutter는 IOS와 Android 모두에서 코딩하는 데 사용할 수 있습니다.최적화는 2D 모바일 앱에 가장 적합합니다.다음 기능을 사용하여 앱을 만들 수 있습니다.
지리적 위치 (Geolocation)
스토리지 액세스 (Storage access)
카메라 액세스 (Camera access)
네트워크 (Network)
타사 SDKs (Third-Party SDKs)
2. Flutter를 사용하면 어떤 장점이 있나요?
Flutter는 모바일 앱 코딩에 다양한 이점을 제공합니다.
코드 양 줄이기- Flutter에서 제공하는 Hot reload 기능은 더 빠른 성능을 돕습니다.앱은C/C++코드로 코딩되어 더 빠른 앱 개발을 위해 가능한 한 기계 코드에 가깝게 만듭니다.Flutter의 위젯 가용성은 코딩에 소요되는 시간을 줄이고 재사용 가능한 코드를 사용합니다.
교차 플랫폼 개발 - Flutter 코드는 여러 플랫폼에서 사용되어 개발 팀 측의 노력을 줄일 수 있습니다.
라이브 및 핫 리로딩 - 코드를 더 빠르고 쉽게 작성할 수 있도록 도와줍니다.코드가 변경되면 쉽게 수정할 수 있습니다.
네이티브 앱처럼 작동합니다. Flutter 코드는 가능한 기계 코드에 가깝습니다.이렇게 하면 코드 해석으로 인한 오류가 줄어듭니다.앱은 기본 환경에서 작동하며 코딩된 앱은 빠르고 사용하기 쉽습니다.
커뮤니티- Flutter에는 여러분이 가질 수 있는 질문에 도움을 주는 활발한 커뮤니티가 있습니다.
최소 코드 - Flutter 앱은 Dart 프로그래밍 언어를 사용하여 코딩됩니다.이것은 개발 속도를 높이고 UI가 빠릅니다.Dart는 매우 빠른 JIT 및 AOT 컴파일을 사용합니다.
더 빠른 문서화 - 빠르고 잘 구성된 문서가 있습니다.중앙 보관소는 나중에 참조할 수 있도록 문서를 저장합니다.
맞춤형 디자인 - 맞춤형 레이어드 아키텍처를 통해 맞춤형 디자인, 더 빠른 렌더링 및 표현력이 풍부한 UI를 디자인할 수 있습니다.
3. Flutter 아키텍처는 무엇입니까?
Flutter에는 3계층 아키텍처가 있습니다.
상위 계층: 상위 계층은 위젯, 애니메이션, 일러스트레이션, 사용자 정의 등과 함께 Dart 프로그래밍 언어로 구성됩니다.
중간 레이어 또는 Flutter 엔진: 이 레이어는 텍스트 표시, 서식 지정, 레이아웃 등을 처리합니다.
하단 레이어 또는 내장 서비스: 이 레이어는 플러그인 또는 패키지를 관리하기 위한 것입니다.
4. Flutter에서 사용할 수 있는 빌드 모드는 무엇입니까?
Flutter는 세 가지 빌드 모드로 구성됩니다.
디버그 모드 - 이 모드는 장치 또는 시뮬레이터에서 앱을 디버깅하기 위한 것입니다.
프로필 모드 - 테스트 라운드에서 앱 성능 분석과 함께 일부 디버깅 기능을 사용할 수 있습니다.
릴리스 모드 - 이 모드는 앱을 배포할 때 사용됩니다.이 모드는 더 빠른 성능을 위한 것입니다.이 모드에서는 코드를 디버깅하거나 편집할 수 없습니다.
5. Dart 프로그래밍 언어는 무엇입니까?
Dart는C 언어와 같은 구문을 사용하는객체 지향 프로그래밍 언어입니다 .이 언어는 오픈 소스이며 2011년 Google에서 개발했습니다. 이 언어는 모바일 앱 프런트엔드를 코딩하기 위해 개념화되었습니다.이 앱은 프런트엔드 사용자 인터페이스를 코딩하는 데 사용됩니다.Flutter 앱은 Dart 프로그래밍 언어를 사용합니다.
6. Flutter에 Dart 언어가 필요한가요?
Flutter를 사용하려면 Dart 언어를 알아야 합니다.Flutter 애플리케이션은 휴대폰 앱 코딩에 Dart 언어를 사용합니다.
7. Flutter의 위젯은 무엇인가요?
Flutter 앱은 위젯을 사용하여 휴대폰 애플리케이션을 코딩합니다.위젯을 사용하여 거의 Flutter에서만 빌드하게 됩니다.위젯은 앱의 보기를 정의합니다.코드를 변경하면 위젯 코드가 자동으로 조정됩니다.위젯은 앱의 최종 디자인을 얻기 위해 서로 중첩됩니다.이는 위젯이 앱이 코딩되는 기반임을 의미합니다.
8. Flutter 앱에 가장 유용한 편집기는 무엇입니까?
Flutter 도구는 플러그인을 사용하여 휴대폰 앱을 코딩합니다.플러그인은 Dart 코드 컴파일, 코드 분석 및 앱 개발에 도움이 될 수 있습니다.IDE 개발에 사용되는 일부 Flutter 도구는 다음과 같습니다.
Visual Studio
Android Studio
Xcode
IntelliJ IDEA
Eclipse
Emacs
9. Flutter의 패키지와 플러그인은 무엇입니까?
유사한 유형의 클래스, 인터페이스 및 하위 패키지는 Flutter 또는 기타 객체 지향 언어의 패키지로 알려져 있습니다.패키지와 플러그인은 코더의 노력을 줄이기 위해 개발에 사용됩니다.코더는 모든 것에 대한 코드를 작성할 필요가 없으며 패키지와 플러그인을 사용하여 코딩 노력을 줄일 수 있습니다.
패키지와 플러그인의 차이점은 분입니다.패키지는 새로운 구성 요소 또는 Dart 언어로 작성된 코드입니다.반면에 플러그인은 기본 코드를 사용하여 더 많은 기능을 허용합니다.때로는 두 용어가 같은 것으로 혼동되기도 하지만 미세한 차이가 있습니다.
10. Flutter를 사용하는 인기 있는 앱이 있습니까?
Flutter를 사용하는 인기 있는 앱이 많이 있습니다.일부 앱은 다음과 같습니다.
Reflectly
Google Ads
Alibaba
Tencent
Birch Finance
그리고 더 많은.모바일 애플리케이션에서 Flutter의 사용률은 매우 높습니다.
11. Flutter 사용의 장점은 무엇입니까
Flutter는 Flutter의 코드 핫 리로드 기능이 제공하는 더 빠른 성능과 함께 유연성과 표현력이 풍부한 UI를 제공합니다.
다양한 사용자가 Flutter 코드를 사용하여 웹 애플리케이션에 액세스하고 국제화할 수 있습니다.
Flutter 코드는 Dart의 기본 컴파일러를 사용하여 ARM 머신 코드로 컴파일되므로 Flutter 위젯은Android및iOS모두에서 기본 성능을 제공합니다 .
Flutter는 더 빠른 배포, 맞춤형 디자인, 더 빠른 문서화, 라이브 및 핫 코딩, C/C++를 통한 최소한의 코딩을 제공합니다.
12. Flutter 아키텍처 설명
Flutter 아키텍처는 3개의 레이어로 구성됩니다.
상위 계층: 위젯, 애니메이션, 일러스트레이션, 사용자 정의 등을 포함한 Dart 프로그래밍 언어가 있습니다.
중간 레이어: 텍스트 표시, 서식 지정 및 레이아웃에 사용되는 Flutter 엔진이라고도 합니다.
하단 레이어: 빌트인 서비스라고도 하며 플러그인 또는 패키지를 관리하는 데 사용됩니다.
13. Flutter에서 사용할 수 있는 빌드 모드는 무엇입니까?
Flutter에는 디버그 모드, 프로필 모드 및 릴리스 모드의 3가지 빌드 모드가 있습니다.
14. Dart 프로그래밍 언어는 무엇입니까?자세히 설명하십시오.
Dart 프로그래밍 언어에 대해 모른다면 Flutter 인터뷰 질문에 대한 준비가 불완전합니다.Flutter는 Dart 프로그래밍 언어 없이는 존재하지 않기 때문입니다.Dart 프로그래밍 언어는 객체 지향, 오픈 소스이며 C 언어의 구문과 매우 유사하며 2011년 Google에서 개발했습니다.
Dart 프로그래밍 언어의 특징:
Dart는 선언적이며 프로그래밍 방식이므로 개발자가 손쉽게 레이아웃을 매우 쉽게 읽고 시각화할 수 있습니다.
Dart는 클래스, 인터페이스 및 함수와 같은 기본 프로그래밍 개념은 물론 배열, 제네릭 및 선택적 유형 지정과 같은 데이터 구조를 복제하는 컬렉션을 지원합니다.
Dart 코드는 JavaScript에 비해 몇 배 더 빠르게 실행됩니다.
Dart 가상 머신(VM)은 JIT(Just-in-Time) 및 AOT(Ahead-of-Time) 컴파일러를 모두 사용하여 코드 실행 시간을 줄이고 더 나은 성능을 제공합니다.
Dart는 객체 지향 프로그래밍 인터페이스로 인해 복잡한 애플리케이션을 생성하는 동안 매우 확장 가능하고 안정적입니다.
15. Flutter의 한계는 무엇입니까?
다음은 플러터의 제한 사항입니다.
타사 라이브러리 부족
더 큰 릴리스 크기
Flutter는 C#이나 C-Sharp 및 JavaScript만큼 발전되지 않은 Dart 언어와 함께 작동합니다.
Google에서 개발한 iOS 개발자에게는 사용자 친화적이지 않으며 Apple 기기의 문제를 해결하는 데 시간이 걸립니다.
16. Flutter 앱에 가장 유용한 편집기
Flutter 앱에 가장 유용한 편집기는 Visual Studio, Android Studio, Xcode, IntelliJ IDEA, Eclipse, Vim 및 Emacs입니다.
17. Flutter의 위젯은 무엇인가요?
Flutter의 위젯은 앱의 최종 디자인을 얻기 위해 서로 중첩됩니다.위젯은 휴대폰 애플리케이션을 코딩하는 데 사용됩니다.
18. Flutter를 사용하는 인기 있는 앱은 무엇입니까?
Flutter를 사용하는 가장 인기 있는 앱은 Reflectly, Google Ads, Alibaba, Tencent, Birch Finance, Coach Yourself 및 Watermaniac입니다.일반적으로 Flutter는 단일 코드베이스에서 또는 고급 브랜드 디자인으로 Android, iOS, Linux, Mac 및 웹 애플리케이션을 개발하는 데 사용됩니다.
19. Flutter를 배우기 위한 리소스는 무엇입니까?
Google에서 오픈 소스로 제공되는 Flutter Documentation에서 flutter를 배울 수 있습니다.
20. Flutter는 어떤 기술로 구축되었나요?
Flutter는 C, C++, Skia - 2D 렌더링 엔진 및 Dart 객체 지향 언어를 사용하여 구축되었습니다.
21. flutter에서 runApp()과 main()의 차이점.
main()
프로그램을 시작할 때 사용하는 함수입니다.
Flutter에서는 main() 함수 없이 프로그램을 작성하는 것이 불가능합니다.
runApp()
화면에 렌더링할 위젯 트리의 루트로 화면에 연결된 위젯을 반환하기 위해 사용합니다.
이 기능을 메인 기능이라고 하며 앱의 드라이버이기도 합니다.
22. 앱 상태는 무엇입니까?
앱 상태는 공유 상태 또는 애플리케이션 상태입니다.앱의 여러 섹션에서 앱 상태를 공유하고 동일한 방식으로 사용자 세션을 유지할 수 있습니다.앱 상태에는 로그인 정보, 사용자 기본 설정, 전자 상거래 장바구니, 소셜 네트워킹 알림 등과 같은 활동이 포함됩니다.
23. Flutter의 패키지와 플러그인은 무엇인가요?
패키지
Flutter에서 네이티브 코드로 사용됩니다.
그것은 장치의 더 많은 사용성을 가능하게 합니다.
플러그인
dart 프로그래밍 언어로 작성된 새로운 코드 또는 구성 요소입니다.
플러그인과 패키지 간의 특정 구분은 새 패키지를 만드는 동안에만 이루어집니다.
24. 플러터의 Key는 무엇을 의미합니까?
Flutter의 Key는 위젯, 요소 및 시맨틱 노드의 식별자인 반면 GlobalKeys 및 LocalKeys는 Key의 하위 클래스입니다.
25. Flutter에서 Key 사용?
Flutter의 키는 주로 위젯 트리에서 수정된 위젯의 상태를 보존하는 데 사용됩니다.
동일한 유형과 정의된 상태를 갖는 위젯 모음을 재구성하고 수정하는 데 사용됩니다.
상태 비저장 위젯으로만 구성된 트리는 수정하지 않습니다.
26. Flutter의 컨테이너 클래스는 무엇입니까?
Flutter의 컨테이너 클래스는 여러 자식 위젯을 수용하고 크기, 패딩 및 배경색을 통해 효율적으로 관리할 수 있는 용량을 가진 위젯입니다.
27. Flutter 인스펙터란 무엇입니까?
Flutter Inspector는 위젯의 청사진과 Flutter의 속성을 시각화하는 데 사용되는 강력한 도구입니다.
28. Flutter Inspector의 이점.
Flutter Inspector는 위젯 트리에서 위젯 모드를 선택할 수 있습니다.
토글 플랫폼을 제공합니다.
페인트 기준선을 표시하고 페인트를 디버그합니다.
위젯을 새로 고치고 성능 오버레이를 표시하거나 숨길 수 있습니다.
29. Dart의 다양한 유형의 스트림
Dart에는 단일 구독 스트림과 브로드캐스트 스트림의 두 가지 유형의 스트림이 있습니다.
단일 구독 스트림
더 큰 전체 내의 이벤트는 단일 구독 스트림으로 순차적으로 전달됩니다.
수신된 문제에 있는 이벤트나 파일 읽기에 사용됩니다.
이벤트를 트리거하는 시퀀스 전체에 하나의 리스너만 있습니다. 그렇지 않으면 이벤트가 트리거되지 않습니다.
브로드캐스트 스트림
처음에는 리스너가 이벤트를 구독해야 하며, 그런 다음 이러한 스트림만 구독자에게 이벤트를 전달하고 구독자는 즉시 이벤트 수신을 시작할 수 있습니다.
이벤트에 대한 여러 리스너가 동시에 있습니다.게다가, 이전 구독을 취소한 후에도 이벤트를 다시 들을 수 있습니다.
30. 언제 mainAxisAlignment와 crossAxisAlignment를 사용해야 합니까?
crossAxisAlignment 및 mainAxisAlignment는 선택에 따라 행 및 열 위젯이 자식과 정렬되는 방식을 제어하는 데 사용됩니다.
mainAxisAlignment
mainAxisAlignment에서 행은 가로로 실행되고 열은 세로로 실행됩니다.
교차 축 정렬
crossAxisAlignment에서 행은 세로로 실행되고 열은 가로로 실행됩니다.
31. SizedBox와 Container의 차이점은 무엇입니까?
SizedBox
Flutter의 SizedBox 위젯에는 지정된 크기가 있습니다.
SizedBox에서는 위젯의 색상이나 장식을 설정할 수 없습니다.
특정 너비 또는 높이를 가진 하위 위젯에만 사용할 수 있습니다.
컨테이너
Flutter의 컨테이너는 너비, 높이, 패딩, 배경색 등을 효율적으로 관리하기 위해 여러 하위 위젯을 포함하는 상위 위젯입니다.
배경 스타일이 필요한 위젯이 있는 경우 컨테이너 위젯에 래핑할 수 있는 색상, 모양 또는 크기 제한이 있을 수 있습니다.
32. 핫 리스타트와 핫 리로드를 구분합니까?
핫 리스타트
보존된 상태 값을 파기하여 상태 값을 기본값으로 설정합니다.따라서 응용 프로그램에서 상태 값을 사용하는 경우 핫 재시작할 때마다 개발자는 완전히 컴파일된 응용 프로그램을 가져오고 모든 상태는 기본값으로 설정됩니다.
Hot Restart는 완전히 새로운 유형의 코드를 사용하여 앱 위젯 트리를 다시 빌드합니다.
Hot Restart는 Hot reload보다 훨씬 더 많은 시간이 걸립니다.
핫 리로드
명령 프롬프트 또는 터미널에 작은 r 키 조합이 있습니다.
새로 추가된 코드를 매우 빠르게 컴파일하여 Dart 가상 머신으로 보냅니다.Dart 가상 머신 코드가 업데이트되면 핫 리로드 기능이 위젯을 포함한 앱 UI를 업데이트합니다.
핫 리로드는 핫 리스타트 기능에 의해 보존되는 상태 값이 있는 경우 애플리케이션을 업데이트하지 않습니다.
33. 추가
안드로이드에서 context 객체는?
안드로이드 프로그래밍에서 "컨텍스트(Context)"란 애플리케이션의 현재 상태와 정보를 담고 있는 객체입니다. 안드로이드 앱은 다양한 컴포넌트(액티비티, 서비스, 브로드캐스트 리시버 등 4대 컨포넌트)로 구성되며, 각각의 컴포넌트는 실행되는 환경에 대한 정보를 알아야 정확한 동작을 수행할 수 있습니다. 이런 환경 정보를 담고 있는 것이 바로 컨텍스트입니다.
컨텍스트는 애플리케이션의 리소스(레이아웃, 이미지, 문자열 등)에 접근하고,액티비티를 실행하거나 서비스를 시작하는 등의 작업을 수행할 때 필요한 정보를 제공합니다. 또한 시스템 서비스에 접근하여 기기의 상태나 설정에 대한 정보도 얻을 수 있습니다.
안드로이드에서 컨텍스트 객체는 android.content.Context 클래스의 인스턴스로 표현됩니다. 각각의 컴포넌트는 자체적인 컨텍스트를 가지며, 이를 통해 애플리케이션의 다양한 자원과 시스템 서비스에 접근할 수 있습니다.
Flutter는 하나의 프로그래밍 언어와 단일 코드베이스로 빠르고 아름답고 고유하게 컴파일된 모바일 애플리케이션을 만드는 데 사용됩니다.
2. Flutter는 SDK인가요?
예, Flutter는 SDK입니다.
3. Flutter 면접은 어떻게 준비하나요?
Flutter 프레임워크를 완전히 이해하려면 Google에서 개발하고 오픈 소스 형식으로 무료로 제공되는 Flutter 문서부터 시작할 수 있습니다.이것은 여러분의 기본 사항을 다루고 Flutter 프레임워크의 안팎을 이해하는 데 도움이 될 것입니다.그런 다음 Flutter 인터뷰를 에이스하기 위해 Flutter에 대한 질문 목록을 시작할 수 있습니다.
즉, nullable 연산자 ? 사용하는 코드는 non-null 연산자 !로 변환하라는 Warning 로그를 친절하게(?) 출력해 줍니다.
하지만 많은 개발자들이 hot-reload 할때마다 뜨는 워닝이 불편했습니다. 물론 저도요 :(
: Warning: Operand of null-aware operation '!' has type 'WidgetsBinding' which excludes null.
../…/src/smart_refresher.dart:513
- 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../../development/flutter/packages/flutter/lib/src/widgets/binding.dart').
package:flutter/…/widgets/binding.dart:1
WidgetsBinding.instance!.addPostFrameCallback((_) {
^
: Warning: Operand of null-aware operation '!' has type 'WidgetsBinding' which excludes null.
../…/src/smart_refresher.dart:765
- 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../../development/flutter/packages/flutter/lib/src/widgets/binding.dart').
package:flutter/…/widgets/binding.dart:1
WidgetsBinding.instance!.addPostFrameCallback((_) {