Mobile 21

JSON 데이터 보여주기

기본 단위 JSON 구조체는 Result 이고 이를 배열로 가지고 있는 구조체로 Response 를 선언 Line 21 : 초기값없는 빈(=()) Result 배열 변수 선언Line 34 : .task 는 뷰가 표시되기 전에 딱 한번만 실행되기 된다. 이때 loadData() 를 호출한다.                비동기처리 async await 페어로 사용하며 loadData() 함수에 async를 선언하여 호출측은 await로 대기Line 40 : guard let 은 if 문 대신에 쓰이는 것으로 else 부분을 먼저 처리하는 효과를 가진다. url 이 nil 이라면 else 처리Line 45 : 예외처리 do {  } catch { }Line 46 : URLSession.shared.data(u..

Mobile/Swift 2025.03.04

View 에 관해

앱이 실행 되면 위에서 같이 App 에서 커스텀 View 를 호출하게 되고 아래와 같이 View 프로토콜에 따라 정의 되어있다.따라서 var body: some View 가 반드시 존재해야만 한다. 여기서 some 은 정해지지 않은 애매한 타입으로 리턴한다는 의미이다.  이는 개발자가 자유롭게 구성이 가능하다는 의미이고 다른 언어에서의 Template 으로 보면 무방할 것이다.body 안에서의 VStack HStack ... 등의 View 들이 정의 되는데 이들 View 들의 생성자는 아래와 같이 정의 되어 있다.View 안에 가변으로 정해지지 않은 수로 여러 다른 View들을 정의할 수 있는데 이는 @ViewBuilder 가 이들 Child View들을 Array 취급을해서 빌드해 주기 때문에 자유롭게..

Mobile/Swift 2025.02.24

List UI 앱 View간의 변수 연동 @Binding

각 VStack의 onTabGesture에 의한 버튼 "Mark as favoriate" 클릭하면  ❤ 가 표시/비표시 된다.만약 이 변수를 서브뷰인 RestaurantInfo 에 선언을 한다면 렌더링시에 초기화가 되니 의도에 맞지 않다.그래서 이 변수를 메인뷰(RestaurantListView) 안에 선언을 하고 서브뷰(RestaurantInfo)에 파라미터로 전달을 하지만 서브뷰에서 값의 변경이 있으면 메인뷰의 변수에도 반영이 되도록 하기 위해 서브뷰에서는 @Bind 로 선언하여야 한다.https://sarunw.com/posts/binding-initialization/  참조   메인뷰에서 레스토랑 수 만큼 bool 형으로 초기화하는 @State 변수를 선언해당 레스토랑의 Favorite 상태 값..

Mobile/Swift 2025.02.24

List UI @State 를 이용한 버튼 액션 보이기(onTabGesture, actionSheet, alert)

@State 로 선언한 변수가 도중에 값이 변하면 자동으로 렌더링이 발생한다.https://sarunw.com/posts/state-variable-initialization/ 참조VStack 이나 HStack 에 onTabGesture 를 추가하면 그 안에 공간위에서 클릭을 하는 경우 onTabGesture 를 호출한다.https://sarunw.com/posts/how-to-make-empty-space-tappable-in-swiftui/ 참조onTabGesture 안에서 @State 정의 변수의 상태를 변경하므로써 그 상태에 따라서 ActionSheet 의 표시 유무를 결정한다. actionSheet분리된 RestaurantInfo 에 State 변수를 선언struct RestaurantInfo:..

Mobile/Swift 2025.02.24

List UI 앱 리팩토링(refactoring)

전편 에서 작성했던 List UI 앱을 리팩토링 해 보도록 하자.1. 하나의 View 에 코드를 전부 넣기보다 분리하는게 좋음2. 분리 대상은 ForEach 안의 코드로 ForEach 는 각 루프에 표시할 변수를 건네 줄 필요가 있음3. 분리할 코드를 ReataurantInfo 라는 이름으로 Subview 를 분리 생성 코드 분리VStack 을 선택한 상태에서 Control 키를 누른 상태에서 마우스 더블클릭 -> Extract Subview 선택 Subview 의 이름 변경ExtractedView 를 선택한 상태에서 Control 키를 누른 상태에서 마우스 더블클릭 -> Refactor::Rename 선택 아래 화면으로 전환되면 RestaurantInfo 로 변경 -> 전부 자동 변환 생성된 Resta..

Mobile/Swift 2025.02.24

List UI 앱 생성

이미지를 Assets 에 드랙앤드롭으로 등록 결과 화면과 사용 Components   리스트 변수 정의 * var 는 변수, let 은 상수의 타입이다. body 정의- ForEach https://eldercoder.tistory.com/100 참조- listStyle https://sarunw.com/posts/swiftui-list-style/ 참조 - listRowSeparator https://sarunw.com/posts/swiftui-list-row-separator-visibility/ 참조- 이미지 확대 축소 https://sarunw.com/posts/how-to-resize-swiftui-image-and-keep-aspect-ratio/ 참조

Mobile/Swift 2025.02.23

Color & Font

https://youtu.be/km2P_KQJyO0?si=6x8z8UXe6MoJ1bTd 요약MaterialApp, Scaffold, AppBar ... 등은 클래스(위젯)이고 각각의 클래스는 생성자로서 또 다른 클래스를 받아 들이게 된다. 클래스의 생성자를 설정할시에는 프로퍼티명 : 설정 클래스 형식으로 하게 된다.프로퍼티명을 지정하는 이유는 입력순서를 신경쓰지 않아도 되고 설정하지 않은 프로퍼티는 디폴트설정을 사용하게 된다.각 클래스 프로퍼티 참조https://api.flutter.dev/flutter/widgets/widgets-library.html#classes widgets library - Dart APIwidgets library The Flutter widgets framework. To ..

Mobile/flutter 2024.09.10

개발 환경 설정

flutter 개발 환경으로서 OS는 Windows, Mac, Linux, Chrome 에서 가능하고 IDE로서는 VS Code,  Android Studio 가 있다.개인적으로는 iOS의 app 도 확인해야 하기 때문에 Mac에서 Virtual Device의 관리와 함수의 설명 팝업등의 가능이 충실하기 때문에 Android Studio 를 사용하고 있다. 각자 환경에 맞게 아래 사이트를 참조하여 설정하길 바란다. Choose your development platform to get startedInstall Flutter and get started. Downloads available for Windows, macOS, Linux, and ChromeOS operating systems.docs.f..

Mobile/flutter 2024.06.10