개요환경 구축(in MacOS)SDK 설치Path 설정설치 확인Xcode 설치CocoaPods 설치Unable to get list of installed Simulator runtimes 오류시Android Studio 설치시작Flutter 플러그인 추가라이선스 관련설치 확인VSCode 환경 설정(필요시)FlutterFlutter 작동 방식Getting StartedFlutter로 웹뷰 앱 만들기라이브러리 추가Reference
개요
환경 구축(in MacOS)
설치 중간중간에
flutter doctor
명령을 사용하면 개발환경 세팅 해야할 것을 친절하게 알려준다SDK 설치
- Brew를 이용한 설치법
brew install --cask flutter
- 또는 공식 사이트에서 SDK 다운로드
Path 설정
zsh 기준 설정법.
vi ~/.zshenv # 파일 마지막에 추가 export PATH=$HOME/development/flutter/bin:$PATH # 환경 변수 적용 source ~/.zshrc
Brew로 설치시에는 별도의 path 설정이 없어도 되는 것으로 보인다.
설치 확인
flutter --version
Xcode 설치
- App Store에서 설치해준다
- 이후 다음 명령어 실행
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer sudo xcodebuild -runFirstLaunch
CocoaPods 설치
CocoaPods는 iOS나 macOS 플랫폼 코드를 위한 패키지 매니저로, 거의 필수적으로 사용된다고 한다.
brew install cocoapods
Unable to get list of installed Simulator runtimes 오류시
다음 오류 발생시
[!] Xcode - develop for iOS and macOS (Xcode 16.0) ✗ Unable to get list of installed Simulator runtimes
다음과 같이 iOS runtime 설치해주기
xcodebuild -downloadPlatform iOS
Android Studio 설치
- Brew를 이용한 설치법
brew install --cask android-studio
- 직접 다운로드
시작
- 기본 권장 설정으로 패키지 다운로드
Flutter 플러그인 추가
cmdline-tools component
를 설치하는 과정입니다.Android Studio에서 Projects > More Actions > SDK Manager > SDK Tools > Android SDK Command-line Tools (latest) 설치
라이선스 관련
flutter doctor --android-licenses
설치 확인
Flutter 도구들이 잘 설치되었는지 확인하는 커맨드.
flutter doctor
VSCode 환경 설정(필요시)
- Extensions
- Dart
- Flutter
이후 VSCode 우측 하단에서 <macOS (darwin)> 선택시 실행 가능한 에뮬레이터를 확인할 수 있다.
Flutter
Flutter 작동 방식
- Dart로 작성한 플러터 코드들은 직접적으로 OS와 소통하지는 않는다
- 대신 C++등으로 작성된 플러터 엔진 위에서 작동한다
- 그래서 플랫폼 native 위젯을 사용하지는 않는다
- 그래서 native 위젯을 사용하지 않는다는 점이 문제가 될 수 있다
- 최대한 비슷하게 만들려 하긴 했지만, 아무튼 native 한건 아님
- 다만 이건 반대로 Flutter에서 모든것을 통제할 수 있게 된 것이기도 함
- 통제당하지 않고 렌더링 엔진을 통해 모든것을 할 수 있다는 것
- Embedder: 플러터 엔진을 가동시키는 runner 프로젝트를 의미
- 즉 플랫폼마다 embedder은 다르다
- Embedder는 호스트 플랫폼에서 플러터 엔진을 가동시키는 역할을 한다
Getting Started
flutter create <app name>
import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); }
runApp 함수는 Widget(위젯)를 받는다.
위젯은 플러터의 기본 단위가 되고, class를 만들때 주요 Widget 3가지 클래스중 하나를 상속받으면 만들 수 있다.
root 위젯을 만들기 위해 가장 기초적인 StatelessWidget를 상속받아 제작할 때, build()를 구현해줘야 한다. build()에서 리턴한 값을 스크린에 표시하게 되는데, build() 리턴값 자체도 위젯이 되어야 한다. 즉 위젯을 리턴하기 위해 위젯을 만든 것.
import 'package:flutter/material.dart'; void main() { runApp(const App()); } class App extends StatelessWidget { @override Widget build(BuildContext context) { } }
root 위젯은 두개의 옵션중 하나를 리턴해야 한다.
- material 앱
- MaterialApp
- 구글의 디자인 시스템
- cupertino 앱
- CupertinoApp
- 애플의 디자인 시스템
내가 구글이나 애플의 디자인같은 것이 아닌 커스텀 디자인을 쓰고 싶다해도 일단 테마를 선택해줘야한다.
Flutter로 웹뷰 앱 만들기
라이브러리 추가
flutter pub add webview_flutter
import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; void main() { runApp( MaterialApp( theme: ThemeData(useMaterial3: true), home: const WebViewApp(), ), ); } class WebViewApp extends StatefulWidget { const WebViewApp({super.key}); @override State<WebViewApp> createState() => _WebViewAppState(); } class _WebViewAppState extends State<WebViewApp> { late final WebViewController controller; @override void initState() { super.initState(); controller = WebViewController() ..loadRequest( Uri.parse('https://blog.wibaek.net'), ); } @override Widget build(BuildContext context) { return Scaffold( body: SafeArea( child: WebViewWidget( controller: controller, ), ), ); } }