본문 바로가기

Programming

(168)
[Fastlane] increment_build_number Action 배포를 하거나 CI에서 빌드할 때 Fastlane을 많이 사용하고 있다. beta에 여러 번 업로드할 경우 builder number 가 같다고 오류가 발생한 경우를 모두 경험해 보셨을 것이다. Fastlane 에는 이런 문제를 해결하기 위한 Action 이 있다. increment_build_number fastlane lane 을 실행하고 이 Action 이 실행되면 build number를 +1 하는 과정을 실행한다. 이것만 추가하면 build number 에 대한 걱정은 하지 않아도 된다. 그럼 추가해보자. Fastlane 답게 추가는 간단하다. 아래 Fastfile 내용을 보시면 lane 아래에 추가만 하면 된다. platform :ios do desc "Push a new beta build ..
Flutter 8일 차 - Flutter for iOS devs (8/8), Databases and local storage, Debugging, Notifications Databases and local storage https://flutter.dev/docs/get-started/flutter-for/ios-devs#databases-and-local-storage How do I access UserDefault in Flutter? iOS 에서는 key-value 쌍으로 된 컬렉션을 UserDefaults 로 알려진 property list 를 이용하여 저장할 수 있다. Flutter 에서는 동일하게 Shared Preference plugin 을 이용할 수 있다. 이 플러그인인 iOS 의 UserDefaults, Android 의 SharedPreference 두 기능을 감싼 것이다. What is the equivalent to CoreData in Flut..
Flutter 7일 차 - Flutter for iOS devs (7/8), Interacting with hardware, third party services and the platform Interacting with hardware, third party services and the platform https://flutter.dev/docs/get-started/flutter-for/ios-devs#interacting-with-hardware-third-party-services-and-the-platform How do I interact with the platform, and with platform native code? Flutter 는 플랫폼에서 바로 코드를 실행하지 않는다. Dartk 코드는 디바이스에서 네이티브하게 실행하는 Flutter 앱을 만든다. Flutter 에서 네트워크 요청을 실행하면 Dart context 에서 바로 실행한다. 일반적으로 네이티브 앱을 만..
Flutter 6일 차 - Flutter for iOS devs (6/8), Form input Form input https://flutter.dev/docs/get-started/flutter-for/ios-devs#form-input How do forms work in Flutter? How do I retrieve user input? Flutter 가 분리된 상태와 불변의 위젯을 사용을 고려할때 , 그림에 유저 입력을 어떻게 맞출지 고민해야 한다. iOS 에서는 일반적으로 유저 입력이나 액션이 제출될때 현재 상태를 조회한다. Flutter 에서는 어떻게 동작할까? 특화된 위젯을 통해서 flutter 에서도 모두 처리된다. 만약 TextField, TextFormField 가 있다면 유저 인풋을 가져오기 위해 TextEditingController 를 제공할 수 있다. What is the..
Flutter 5일 차 - Flutter for iOS devs (5/8), Gesture detection and touch event handling, Theming and text Gesture detection and touch event handling https://flutter.dev/docs/get-started/flutter-for/ios-devs#gesture-detection-and-touch-event-handling How do I add a click listener to a widget in Flutter? iOS 에서는 클릭 이벤트를 처리하기 위해서 GestureRecognizer 를 붙인다. Flutter 에는 터치 리스너를 추가하는 2가지 방법이 있다. 만약 위젯이 이벤트 발견을 지원한다면 함수를 넘겨라 그리고 함수에서 이벤트를 처리해라. 만약 이벤트 발견을 지원하지 않는다면 GestureDetector 로 감싸고 onTap 매개변수에 함수를 넘겨라 Ho..
Flutter 4일 차 - Flutter for iOS devs (4/8), Threading & asynchronicity Threading & asynchronicity https://flutter.dev/docs/get-started/flutter-for/ios-devs#threading--asynchronicity How do I write asynchronous code? Dart 는 Isolates, an event loop, 비동기 프로그램을 지원하는 싱글 스레드 모델이 있다. Isloate 를 생성하지 않는 한 dart code 는 메인 스레드에서 실행되고 event loop 에 의해 구동된다. Flutter 의 event loop 은 iOS main loop 와 동일하다. Dart 의 싱글 스레드 모델은 모든 것을 UI 멈춤을 초래하는 블러킹 연산으로 실행하는 것이 아니다. 그 대신 비동기 작업을 실행하는 as..
Flutter 3일 차 - Flutter for iOS devs (3/8), Navigation Navigation https://flutter.dev/docs/get-started/flutter-for/ios-devs#navigation How do I navigate between pages? iOS 에서 view controllers 사이 이동을 하려면, 화면 표시를 하는 view controllers 의 스택을 관리하는 UINavigationController 를 사용할 수 있다. Flutter 에서는 Navigator, Routes 를 사용하여 비슷하게 구현한다. Route 는 앱의 screen, page 의 추상적인 개념이다. Navigator 는 routes 를 관리하는 위젯이다. route 는 거의 UIViewController 와 일치한다. navigator 는 iOS UINavig..
Flutter 2일 차 - Flutter for iOS devs (2/8), Views Views How do I lay out my widgets? Where is my Storyboard? https://flutter.dev/docs/get-started/flutter-for/ios-devs#how-do-i-lay-out-my-widgets-where-is-my-storyboard iOS 에서는 뷰와 제약을 구성하는데 스토리보드를 사용하거나 코드로 해야 한다. Flutter 에서는 코드로 위젯 트리를 작성하므로써 레이아웃을 정의한다. iOS 제약을 흉내내는 위젯들에는 여백(padding) 을 추가할 수 있다. 위젯 카탈로그에서 flutter 가 제공하는 레이아웃을 볼 수 있다. How do I add or remove a component from my layout? https://fl..