이번 포스트에서는 Android Developers 공식 문서를 통해 Jetpack Compose의 상태 호이스팅의 개념과 상태 호이스팅을 하는 다양한 방법들에 대해 정리하겠습니다. 스테이트풀(Stateful)과 스테이트리스(Stateless)remember API를 사용하여 객체를 저장하는 Composable은 내부 상태를 생성하여 Composable을 스테이트풀(Stateful)로 만듭니다. HelloContent는 내부적으로 name이라는 상태를 보존하고 수정하므로 스테이트풀(Stateful) 컴포저블의 한 예시가 됩니다. 이는 호출자가 상태를 제어할 필요가 없고 상태를 직접 관리하지 않아도 상태를 사용할 수 있는 경우에 유용합니다. 그러나 내부 상태를 갖는 Composable은 재사용 가능성이 적..
안녕하세요. 이번 포스트에서는 Jetpack Compose의 상태관리에 대해 알아보겠습니다. Android 앱의 상태 및 Jetpack ComposeAndroid 앱의 상태는 시간에 따라 변할 수 있는 값을 의미합니다. -> 이것은 매우 광범위하게 정의되며 Room의 데이터베이스에서부터 Room의 변수까지 모든 것을 포함합니다. 모든 Android 앱에서는 User에게 상태를 표시합니다. 예를 들면 아래와 같은 상황이 있을 수 있습니다.- 네트워크 연결을 설정할 수 없을 때 표시되는 스낵바- 블로그 게시물 및 댓글- 사용자가 클릭하면 버튼에서 재생되는 물결 애니메이션- 사용자가 이미지 위에 그릴 수 있는 스티커 Jetpack Compose를 사용하면 이러한 Android 앱에서 어디에 상태를 저장하고 사..
이번 포스트에서는 Mixin으로 StatefulWidget의 초기화 중복 코드를 제거하는 방법을 정리하겠습니다. StatefulWidget의 Controller 중복 코드 발생 StatefulWidget에서 스크롤 또는 애니메이션 작업 등의 애플리케이션의 UI 상태와 연결하고 관리해야 하는 작업을 수행해야 할 때 Controller를 이용합니다. Controller의 종류로는 ScrollController, AnimationController, TextEditingController 등이 존재합니다. 예를 들면, ScrollController는 스크롤 상태를 추적하고 제어하는 데 사용됩니다. 이를 통해 스크롤 위치를 제어하고 스크롤 이벤트를 받을 수 있으므로 무한 스크롤, 페이징 또는 스크롤 위치에 따른..
이 글은 Riverpod 2.0 기준으로 작성되었습니다. 이번 포스트에서는 공식 문서를 보면서 Riverpod에 대해 알아보고, 왜 Riverpod을 사용해야 하는지에 대해 알아보겠습니다. 사용 방법은 간략하게만 다루었으며 Provider의 종류에 대한 정리는 패키지가 워낙 자주 바뀌기도 하고 공식 홈페이지에 워낙 잘 정리되어 있어서 참고하시면 좋을 것 같습니다. Flutter의 상태 관리 Flutter는 선언형 UI이며 각각의 상태를 포함하고 있는 위젯 트리를 기반으로 구성되기 때문에 상태 관리가 매우 중요합니다. 단일 위젯에서만 사용하는 상태일 경우는 상태 관리가 특별하게 관리되지 않아도 되지만, 앱의 여러 위젯에서 상태를 사용하는 경우에는 상태 관리가 특히 더 중요합니다. 이러한 여러 위젯에서 사용..
GATT(Generic Attribute Profile)란? GATT(Generic Attribute Profile)는 BLE 연결을 통해 프로필 및 데이터를 주고받기 위한 방법을 정의합니다. 로우 레벨의 상호작용을 정의하는 GAP와는 달리 GATT는 실제 데이터 전송 절차 및 데이터 형식만을 다룹니다. 또한, 다른 업체에서 제작한 서로 다른 디바이스 간의 상호 운용성을 보장하는 SIG defined GATT-based profiles을 제공합니다. 올바르게 작동하려면 모든 표준 BLE Profile은 GATT을 기반으로 해야 하며 GATT를 준수해야 합니다. 따라서, 어플리케이션과 사용자는 데이터를 전송하기 위해 데이터의 타입을 정할 때 GATT 규칙에 따라 전송해야 합니다. GATT는 ATT(Attr..