본문 바로가기
반응형

전체 글319

freezed 왜씀? dart data class를 사용하자! 1. Dart Data Class란? https://github.com/andrasferenczi/dart-data-plugin GitHub - andrasferenczi/dart-data-plugin: IDEA plugin for generating utility methods for Dart data classes IDEA plugin for generating utility methods for Dart data classes - andrasferenczi/dart-data-plugin github.com flutter에서 json 관련 클래스를 만드는건 아주 귀찮습니다. 이에 freezed를 많이 사용하는데요.. 사실 이 패키지도 몹시 불편합니다. 보일러플레이트 코드를 작성하고 거기다가 코드 제너.. 2024. 4. 16.
vim으로 flutter를 개발하는 원대한 꿈을 꿨다 vim으로 flutter를 개발하려는 원대한 꿈을 꿧다. 유튜브에서 한 외국인이 neovim으로 세팅한 영상을 보고 neovim 세팅에 대해 공부했다. 복잡한 세팅을 미리 다 해둔 nvchad와 lunarvim 같은 프로젝트 존재를 알게 되었고 nvchad 로 세팅을 마무리 하였다. 결과는 와우! 진짜 단축키 다 외우니 안드로이드 스튜디오보다 생산성이 훨씬 더 잘나왔다. vim flutter tools라는 플러그인은 생각보다 훨씬 잘 돌아갔고, lsp라는 프로토콜을 이용한 자동완성은 몹시 수준급이였다. 적어도 dart 영역에서는 말이다... 허나 나는 회사에서 네이티브 코드도 만질일이 있다. 이에 나는 코틀린과 스위프트까지 영역을 확장하려 했다. 거기서부터 문제였다. kotlin은 제대로 된 lsp가 없.. 2024. 3. 28.
NeoVim과 flutter 설정 먼저 nvim과 nvchad를 깔아준다 brew install nvim git clone https://github.com/NvChad/starter ~/.config/nvim && nvim 설치도중 permission error가 난다면 ~/.local/share와 ~/.local/state에 퍼미션 문제가 있다. chown -R 유저이름 nvim 을 해주어 권한을 가져오자 설치가 되었다면 아래 코드를 통해 lua lsp를 설치해주자. :MasonInstall lua-language-server 다음으로 ~/config/nvim으로 이동한다 그리고 lua/plugins/init.lua 파일을 연 뒤 flutter-tools 를 설치해준다 { 'akinsho/flutter-tools.nvim', lazy.. 2024. 3. 27.
Xcode에서 SwiftUI 코드선택 익숙해지기 1. 개요 안드로이드 스튜디오에서는 expand selection이라는걸 제공한다.커서기준으로 범위를 확장하면서 선택해주는 기능인데 flutter 개발할 때 매우 유용하다. 현재 내 커서가 위치한 위젯의 범위를 정확하게 선택가능기에 위젯들을 마치 레고 조립하듯이 코드를 작성할 수 있다. 헌데 Xcode에서는 그런 기능이 없다는것을 알았다... 너무 불편하다. 그래서 방법을 찾은 결과 결국 해답은 vim에 있었다. 2. 선택방법 여러가지 Va{ 혹은 Va}, vaBb 을 하면 플러터에서 하듯이 뷰의 전체를 선택가능하다 실제 vim에서는 vaBV를 해야한다. 고로 vaBV로 연습하자 va{ 혹은 va}, vaB을 하면 중괄호를 포함한 뷰의 바디부분을. 선택할 수 있다 vab는 소괄호 선택 vaB는 중괄호 선.. 2024. 3. 22.
[Swift] PropertyWrapper 사용법 https://docs.swift.org/swift-book/documentation/the-swift-programming-language/properties/ Documentation docs.swift.org 1. PropertyWrapper란? 파이썬의 데코레이션과 비슷하다. 파이썬의 데코레이션은 코드 앞뒤로 어떠한 코드를 붙여주는 작업을 해준다. 프로퍼티 래퍼또한 비슷하다. 어떤 프로퍼티 앞뒤로 특정한 작업을 넣을 수 있다. 2. 만드는법 만드는 방법은 간단하다. 1. struct를 정의할 때 @PropertyWrapper라고 적어준다 2. struct안에 wrappedValue라는 computedProperty를 정의해주면 된다 아래는 범위가 12까지인 프로퍼티를 프로퍼티 래퍼를 이용해 구현하.. 2024. 3. 22.
[SwiftUI] StateObject, ObservedObject, EnvironmentObject 1. StateObject, ObservedObject란 값이 아닌 참조타입(클래스) 형태의 State를 관리할 때 사용된다. private으로 선언되어야 한다. memberwise initializer에서 설정되는걸 막기위한것 @Published 프로퍼티 래퍼를 사용한다 ObservableObject 프로토콜을 따른다 처음 한번 생성되면 뷰 라이프사이클 상관없이 계속해서 유지된다. 처음 이걸보고 struct로 이루어진 State와 뭐가다르지? 라고 생각하고 자료를 찾아봤는데... 명확하게 답변해주는 토픽이 하나도 없었다. 단지 class는 reference 타입이라는 점이 가장 큰 차이. 그 외에도 class가 struct 대비 가지고 있는 장점들이 워낙 많으니 그러한 차이들이 struct state와.. 2024. 3. 21.
[SwiftUI] 자식에게 State 전달하기 https://developer.apple.com/documentation/swiftui/managing-user-interface-state Managing user interface state | Apple Developer Documentation Encapsulate view-specific data within your app’s view hierarchy to make your views reusable. developer.apple.com 1. Binding 키워드 먼저 자식View에다가 @Binding 이라는 프로퍼티 래퍼를 생성한다. 이 프로퍼티 래퍼는 부모의 스테이트를 받아오는 역할을 한다 struct PlayButton: View { @Binding var isPlaying: Bool.. 2024. 3. 21.
SwiftUI에서 {} 동작 원리 너무 궁금해서 찾아보았다.. 먼저 var body의 경우 아래와 같이 View라는 프로토콜에서 정의되어있고 computed property로 사용된다 그럼 VStack은 어떻게 동작하는가? https://stackoverflow.com/questions/66704988/returning-multiple-view-objects-from-a-closure-in-swift Returning multiple View objects from a closure in Swift I often see code like this: VStack { Text("A") Text("B") } From looking at the swift tutorials, I know that this is shorthand for speci.. 2024. 3. 20.
[Swift] Generic이란 1. Generic Function 아래와 같은 함수를 보자. 인트 변수를 두개바꿔주는 함수이다. func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a a = b b = temporaryA } 만약 정수형이 아니라 실수형을 바꿔주고 싶다면? 아래처럼 함수바디 구현체는 같은데 함수이름과 파라미터 자료형만 다른걸 세개나 정의해줘야 한다. func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a a = b b = temporaryA } func swapTwoStrings(_ a: inout String, _ b: inout String) { let temporaryA = .. 2024. 3. 20.
반응형