profile
느긋하게 살자!
post-thumbnail

Jetpack Compose Lifecycle

출처: https://developer.android.com/jetpack/compose/lifecycle?hl=ko Composable 컴포저블 함수에서 사용되는 어노테이션 Jetpack Compose를 구성하는 함수의 이름 선언형 UI의 최소 단위 Composition 컴포저블 함수가 화면에 그려지기 위한 전체의 과정 제일 처음 그려지는 1회의 과정...

2023년 7월 16일
·
0개의 댓글
·

Unidirectional Data Flow (단방향 데이터 흐름)

Compose의 UI는 수정될 수 없음. UI 상태가 변경될 때만 변경된 UI 트리를 다시 만듬. ex) TextFiled는 값을 받고 onValueChange를 반환함. TextFiled가 상태를 같는게 아닌 다른 만들어놓은 값이 가짐 상태 반환 -> 이벤트 반환. ** 단방향 데이터 흐름이 적합 이벤트, 상태 이벤트 UI의 일부에서 이벤트를 발행해 위...

2023년 7월 11일
·
0개의 댓글
·

Jetpack Compose 부수 효과

부수 효과란? 구성 가능한 함수의 범위 밖에서 발생하는 앱 상태에 관한 변경사항 컴포저블의 수명 주기 및 속성으로 인해 컴포저블에는 부수 효과가 없는 것이 좋으나 특정 상황에 필요한 경우가 있음 LaunchedEffect 컴포저블의 범위에서 정지함수를 실행 컴포저블 내에서 안전하게 정지함수를 호출하기 위해 사용 rememberCoroutineScope 컴...

2023년 7월 9일
·
0개의 댓글
·
post-thumbnail

Jetpack Compose Recomposition

컴포지션 앱의 UI를 설명하는 컴포저블의 트리 구조 (UI가 어떤 형태로 이루어졌는지 기술) 초기 컴포지션 처음 Composable를 호출했을 때 만들어짐 리컴포지션 초기 컴포지션 이후 UI의 상태가 바뀔 때 마다 다시 그려지는 과정 상태가 변경되면 리컴포지션이 트리거됨 리컴포지션 스킵 두 인스턴스 equals 결과가 같을 경우 공개 프로퍼티가 변경되면 컴...

2023년 7월 9일
·
0개의 댓글
·

Effective Dart: Design

Names 일관되게 사용하기 이름을 일관되게 작성한다, 내가 사용한 이름이 다른 외부에서도 사용했던 이름이라면 사용자 들은 해당 기능을 사용하기 전에 학습해야할 양을 줄일 수 있다 약어 사용을 피한다 약어가 일반 단어보다 일반적인 경우가 아니라면 사용하지 않는 것이 좋고 사용하는 경우에는 대문자로 올바르게 표시한다 이것이 무엇인지 가장 잘 보여줄 수 있는...

2023년 6월 12일
·
0개의 댓글
·

Effective Dart - Asynchrony in usage

Future을 async/await와 같이 사용하는 것을 지향한다 비동기 코드는 future와 같은 추상화를 사용하더라도 읽고 디버깅하기 쉽지않다 -> async/await를 사용하면 문법의 가독성 향상과 비동기 코드에서 Dart의 모든 흐릅 제어문을 사용할 수 있다 필요가 없다면 async를 사용하지 않는다 메소드의 동작을 변경하지 않고 async를 생...

2023년 6월 11일
·
0개의 댓글
·

Effective Dart - Variables, Members, Constructors in usage

변수 - 지역 변수에 var과 final을 사용할 때 일관된 규칙을 따른다 - 계산이 가능한 값들을 저장하는 것을 피한다 멤버 - 필드에 불필요한 getter와 setter를 생성하지 않는다 - 읽기 전용인 프로퍼티를 생성할 때, final 키워드 사용을 지향한다 변수를 읽을 수만 있고 외부 코드로 수정할 수 없는 변수를 생성하는 쉬운 방법임 > 내부에...

2023년 6월 11일
·
0개의 댓글
·

Effective Dart - Functions in usage

함수의 이름과 함수를 바인드 하려면 함수 선언식을 사용 함수 안에 함수가 선언되는 것을 흔한 일이며 흔히 이런 함수들은 콜백으로 사용되고 이름이 없음 -> 함수 표현식을 이런 경우에 적합 함수에 이름을 부여하고 싶다면 변수에 람다를 바인딩 하지 말고 함수 선언문을 사용 람다 대신 Tear-off를 사용 함수, 메서드 또는 named 생성자를 참조할 때 괄...

2023년 6월 11일
·
0개의 댓글
·

Effective Dart - Collections in usage

가능하다면 컬렉션 리터럴을 사용한다 Dart는 세 개의 핵심 컬렉션 타입을 가지고 있음(List, Map, Set). Dart는 컬랙션 생성을 위한 더 좋은 내장 문법을 가지고 있음 -> 해당 예제는 named 생성자에 적용하지 않음, List.from(), Map.fromIterable() 등 비슷한 생성자들은 저마다 사용법이 존재함 (List 클래스 ...

2023년 6월 11일
·
0개의 댓글
·

Effective Dart - Strings in usage

인접 문자열을 사용하여 문자열 리터럴을 연결한다 두 개의 문자열 리터럴 (값이 아니라 실제 따옴표로 묶은 리터럴 형식)을 연결하는 경우에 +를 사용할 필요가 없고 단순히 나란이 배치시키면 됨. 긴 단일 문자열을 만들 때 좋다 문자열 값들을 합성할 때 보간 사용을 지향한다 +를 이용해 긴 체인의 문자열을 만들어도 되지만 Dart에서는 보간을 사용하는게 깔끔...

2023년 6월 11일
·
0개의 댓글
·

Effective Dart: NULL in usage

변수를 명시적으로 null로 초기화하지 않는다 변수가 nun-nullable 타입을 초기화하지 전에 사용한다면, Dart는 컴파일 에러를 발생시킴 변수가 nullable이라면, 암묵적으로 null로 초기화됨 > Dart에는 "초기화되지 않은 메모리"라는 개념이 없고 명시적으로 null로 초기화하지 않아도 괜찮음 매개변수에 기본 값으로 null을 명시하여 ...

2023년 6월 11일
·
0개의 댓글
·

Effective Dart: Library in usage

라이브러리 part of 명령어에 문자열을 사용한다 library 파일을 직접 가리키는 URI string을 사용하는 것이 좋다 이름만 사용한다면 해당 부분이 실제 어떤 라이브러리에 속하는지 모호할 수 있음 다른 패키지의 src 디렉토리에 있는 라이브러리를 import하지 않는다 lib 아래 src 디렉토리는 패키지가 자체적으로 구현한 private 라이...

2023년 6월 11일
·
0개의 댓글
·

Flutter - FittedBox class

FittedBox 내의 컨텐츠를 FittedBox 부모 사이즈에 맞출 때 사용 Sample code Option BoxFit.none: 이미지를 리사이즈 하지 않음 BoxFit.contain: 가로, 세로 중 한쪽으로 가능한 한 크게 표시 BoxFit.cover: 지정한 영역을 비율에 맞게 꽉 채움 BoxFit.fillWidget: 넓이에 맞게 확대 또...

2023년 6월 11일
·
0개의 댓글
·

Flutter - AspectRatio

AspectRatio 자식 위젯을 특정한 비율로 만드는 클래스 aspectRatio에 비율 값(분수, 소수로 표현)을 적고, child 위젯을 설정하면 끝 ex) 3/2 너비 3 높이 2 == 1.5 너비가 높이의 1.5배 [그림 1] 16:9 [그림 2] 3.0 > 츨처 - https://api.flutter.dev/flutter/widgets/Asp...

2023년 6월 11일
·
0개의 댓글
·

Flutter - FractionallySizedBox class

- UI 사이즈를 상대적으로 세팅할 때 사용 (예: 가로 길이의 70%, 공백이 위젯의 10%) widthFacot, heightFactor를 사용한다 (0~1) 예제 1. 화면 가로, 세로의 50% 크기로 UI 그림

2023년 6월 7일
·
0개의 댓글
·

Flutter - Expanded class

- Row, Column, Flex의 하위에 사용하면 공간을 채우기 위한 클래스 주축을 따라 사용 가능한 공간을 채루며 하위 자식이 여러 개일땐 flex factor에 따라 공간을 나눠 사용함 예제 1. Column을 이용해 새로로 나열 Container는 정해진 height로 보여주고 가운데 expand 클래스가 나머지 자리를 채운다 예제 2. Row...

2023년 6월 7일
·
0개의 댓글
·

Effective Dart - Style

Effective Dart - Style

2023년 6월 1일
·
0개의 댓글
·

Dart - Extension method

https://dart.dev/language/extension-methods

2023년 5월 30일
·
0개의 댓글
·

Dart - Extend a class

extextnds로 서브 클래스를 생성하고 super로 슈퍼 클래스임을 알려줌 Overriding members 서브 클래스는 연산자를 포함한 인스턴스 메소드, getter, setter를 override할 수 있다 @override 어노테이션을 이용해 다음 처럼 사용할 수 있다 override 메소드는 메소드 선언이 일치해야함 리턴 타입이 같거나 하위...

2023년 5월 30일
·
0개의 댓글
·

Dart - Mixins

Mixins

2023년 5월 30일
·
0개의 댓글
·