[1] @State 이니셜라이저에서 state를 초기화해주려면 underscore를 써서 접근해야한다. (출처) struct SomeView: View { @State var selectedIndex: Int init() { let selectedInde = // do something _selectedIndex = State(initialValue: selectedIndex) } var body: some View { ... } } [2] @Binding 바인딩도 마친가지이다. 이니셜라이저에서는 underscore를 써서 접근해야한다 struct SomeView: View { @Binding var someValue: Int init(someValue: Binding) { _someValue = som..
[1] 다트의 함수 형태 리턴 타입과 파라미터 타입을 명시해줄 수도 생략해줄 수 도 있다. return을 => 로 대체할 수도 있다. bool isFood(String name) { return true; } isFood2(name) { return true; } isFood3(name) => true; return 타입을 생략한 경우 알아서 유추되지만, 파라미터 타입을 생략하면 dynamic 타입으로 되는 것을 알 수 있다. (dynamic은 어떤 타입이든 다 들어올 수 있음) [2] 다트의 파라미터 첫번째, 필수 O + 이름없는 parameter // required + not named parameter bool isFood(String name) { return true; } isFood("고기"..
Flutter 앱 자동배포 구축 - iOS 편 에서 이어집니다. Getting started with fastlane for Android 문서를 참고해주세요 [1] fastlane init 안드로이드 폴더로 이동해서 아래 명령어를 실행시켜주세요 fastlane init [2] Package Name Package Name을 물어보는데 대답해줍니다. app/build.gradle의 applicationId를 알려주면 됩니다. [3] json secret file 그 다음 json secret file의 경로를 물어보네요 json secret file을 만들어서 path를 알려줘야해요!+! Getting started with fastlane for Android 문서의 Collect your Google..
얼마전 간단한 플러터앱을 만들어서 앱스토어와 구글 플레이스토어에 배포를 해보았다. (플러터 앱 배포 회고) 근데 버그 발견해서 새 버전 낼때 때마다 iOS, 안드로이드 각각 신경써야하고 AppStoreConnet와 구글플레이스토어 콘솔 각각 들어가야하고... 두개를 다하려니 너무 귀찮다. 😭 (iOS 앱 출시 준비하기 , Android 앱 출시 준비하기 ) 그러다가 메마른 땅 촉촉한 단비와도 같은 웹 개발자의 Travis CI 기반 Flutter 앱 지속적 빌드 및 배포 환경 구축기 라는 글을 만나게 되는데... 따라해보겠습니다! (다 해보고 나니 플러터 뿐만아니라 iOS 네이티브앱에 그대로 해도 되겠더라구요) [1] Fastlane 설치하기 fastlane docs 를 참고해서 설치해줄게요 sudo g..
Get the Flutter SDK 문서 를 참고해주세요여기 따라하다가 쌍따옴표 이슈 를 만난 김에 정리합니다-!! 1) zip 다운받기 다운받으면 flutter라는 폴더로 압축이 풀립니다. 2) flutter 폴더를 원하는 위치로 이동하기 어디에 둘까하다가 홈에가서 development 폴더하나 만들고 여기에 넣어둠 3) Path 추가하기맥 OS 카탈리나부터 터미널이 bash가 아니라 zsh로 바뀌었기때문에bash_profile에 Path 추가해줘도 터미널에서 flutter 명령을 인식 못합니다. 그러니까 풀어서 설명하면..!아래 두가지 방법 중 하나로, bash_profile을 열어서open ~/.bash_profilevi .bash_profile 아래 라인을 추가해주고 저장해줘도 export PAT..
[1] 단축어 만들고 싶은 이유 XCode에서 빌드를 돌리면 ~/Library/Developer/Xcode/DerivedData 에 빌드결과를 저장합니다. (xcode build cache 라고 생각하면 됩니다) 컴파일이 안될 경우, 보통 3단계를 합니다. 1) Clean build Command + Shift + K 를 눌러서 클린빌드합니다. DerivedData > 프로젝트 > Build 안의 폴더를 깨끗하게 비워줍니다. 클린빌드 하기 전, 클린빌드 한 후 2) Clean build folder 클린빌드를 했는데도 컴파일이 안된다!! 할때, 2번을 하게 됩니다. Command + Shift + Option + K 누르면 됩니다. Build 폴더를 아예 지워버립니다. 클린 빌드 폴더 하기 전, 클린 빌..
[1] 전처리문이란전처리문(PREPROCESSOR STATEMENT)은 말그대로 컴파일 이전에 미리 처리되는 문장을 의미합니다. 전처리문은 #로 시작합니다. 종류도 여러가지가 있는데요, 상수(constant)를 정의하는 전처리문#define PI 3.14 파일을 포함시키는 전처리문#include 파일이름 참거짓을 판별해서 어떤 코드를 컴파일 할지말지 결정하는 전처리문 #if 조건문 source code.. #endif등등이 있습니다. 참고로 #define이랑 #include는 스위프트에서 못써요-!! 위의 예제는 C에서 주로 쓰이는 것 가져왔습니다. [2] Swift에서 전처리문을 쓴 경우 iOS 개발하다가 쓰는 경우는보통 release와 debug를 구분하거나 #if DEBUG print("DEBUG에..
[WidgetKit] 위젯만들기 포스팅에서는 StaticConfiguration을 사용하였는데요, 위의 움짤처럼 Edit Widget 기능을 추가해주기 위해 IntentConfiguration을 사용해보겠습니다. 참고로 Making a Configurable Widget 문서를 보고 알게 되었는데, 저렇게 Editable한 위젯을 Configurable Widget이라고 부릅니다-! 우선 Intent가 필요합니다. Widget extension 타겟으로 SiriKit Intent Definition File을 추가해주세요 (저는 파일이름 WidgetIntents로 해줬습니다.) Intent 파일을 클릭하고 + 눌러서 New Intent 해주세요 저는 PRList라고 이름을 지었습니다. Intent 카테고..
[1] Black Screen이 되어버렸을때 접근성 테스트하다가 소리는 나는데, 화면이 black screen으로 되어버린 적이 있었습니다. 그럴때는 손가락 세개로 홈 스크린을 빠르게 세번 누르면 화면이 다시 등장합니다.. (quickly triple-tap the screen) 출처: discussions.apple.com/thread/250398181 Accessibility dark screen - Apple Community I’m working with the accessibility voice over. I haven’t had this problem previously. When I turn voice over in, the home screen is dark even when I push ..
애플에서 예제로 보여준 Fruta 앱 처럼 macOS, iOS, and iPadOS에서 하나의 코드베이스로 다 동작하는 앱을 만들 수 있게 되었습니다. 👏 (iOS 14, XCode 12에서부터, SwiftUI를 이용해서) [1] Multi-platform 프로젝트 만들기 Xcode 12 베타버전을 열어주세요 새 프로젝트 만들기를 누르면 Multiplatform이라는 탭이 생겨있습니다. 거기서 App을 눌러주세요 프로젝트 이름을 입력해주고 프로젝트를 만들면 Shared, iOS, macOS 라는 그룹이 생겨져있습니다. 저는 test도 체크해서 저렇게 Tests iOS, Tests macOS라는 그룹도 생겼어요 그리고 iOS 또는 macOS로 돌려볼 수 있게 되어있어요 (mac OS는 빅서로 올려야지 돌리..
- Total
- Today
- Yesterday
- cocoapod
- Flutter Text Gradient
- ribs
- Django Heroku Scheduler
- Python Type Hint
- flutter 앱 출시
- Watch App for iOS App vs Watch App
- Flutter Spacer
- Django FCM
- 장고 URL querystring
- flutter build mode
- 장고 Custom Management Command
- 플러터 싱글톤
- DRF APIException
- flutter deep link
- drf custom error
- SerializerMethodField
- flutter dynamic link
- Dart Factory
- Sketch 누끼
- ipad multitasking
- PencilKit
- METAL
- 구글 Geocoding API
- Flutter 로딩
- Flutter Clipboard
- 플러터 얼럿
- Flutter getter setter
- github actions
- Django Firebase Cloud Messaging
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |