반응형

전체 글 128

[Flutter] Dive into Flutter State Management. UI = f(state).

IntroduceFlutter의 State앱 상태가 변경되면 사용자 인터페이스가 다시 그려진다.setState로 Widget의 state를 변경하며, 그때마다 Layer Tree를 다시 만든다.[공식 문서 기준] 언제든지 UI를 재구축하기 위해 필요한 모든 데이터 집합.widget.setText()와 같이 UI 자체를 반드시 변경할 필요 없으며, 상태를 변경하면 UI가 처음부터 다시 만들어진다.Ephemeral(Local) state Ephemeral state(UI state or local state)는 단일 위젯에 포함할 수 있는 상태이다. 예) PageView 안에 현재 페이지 예) BottomNavigationBar에서 현재 선택된 탭 이러한 상태는 위젯 트리의 다른 부분에 접근할 일이 거의 없..

Mobile/Flutter 2022.12.02

[Algorithm] Kotlin 약수의 개수 구하기

0. 약간의 수학적 지식 어떤 수 N을 약수 m으로 나누었다면 x = N/m. 즉, x라는 또 하나의 약수가 보장된다. (제곱근이 아닌 경우) 예1) 35 = 5 * 7 -> 5 = 35/7. 7이라는 약수로 나누어서 5라는 약수가 보장된다. 예2) 4 = 2 * 2 -> 2 = 4/2. 2라는 약수로 나누어서 2라는 약수가 보장되지만, 같은 수이기 때문에 카운트하지 않는다. 1. O(N) for문을 사용해서 1부터 N까지의 수 중 number(타겟 숫자)와 나머지 연산을 했을 때 나머지가 0인 수를 구한다. O(N)이긴 하지만, number의 수가 커지면 커질 수록 비효율적인 알고리즘이 된다. fun helper(number: Int): Int { var count = 0 for (i in 1..num..

[Flutter] Dive into StatefulWidget. Flutter Widget Library.

Introduce 상태 변경이 가능한 위젯이다. 상태란, 위젯이 완성될 때 동기적으로 읽을 수 있는 정보이며, 위젯의 수명 동안 변경될 수 있는 정보이다. StatefulWidget의 상태 변경은 setState()를 이용해서 변경이 가능하다. StatefulWidget 인스턴스 자제는 Immutable이며, createState 메서드에 의해 생성된 State 객체에 변경 가능한 상태를 저장한다. class ItemCounter extends StatefulWidget { final String name; ItemCounter({this.name}); @override _ItemCounterState createState() => _ItemCounterState(); } class _ItemCounte..

Mobile/Flutter 2022.11.26

[Flutter] Dive into StatelessWidget. Flutter Widget Library.

Introduce 변경할 수 있는 상태가 필요하지 않은 화면을 구성할 때 사용하는 위젯 클래스. build() 메서드가 호출되면 화면에 Widget을 그린다. class GreenFrog extends StatelessWidget { const GreenFrog({ super.key }); @override Widget build(BuildContext context) { return Container(color: const Color(0xFF2DBD3A)); } } build() 메서드가 호출되는 경우는 세 가지이다. Widget이 Widget Tree에 삽입되는 경우. Configuration Change가 발생한 경우. InheritedWidget의 변경 사항이 발생한 경우. Widget Tree ..

Mobile/Flutter 2022.11.24

[Android] Concept of DI Hilt. Dive into Hilt Components.

Component Hierarchy 기존 Dagger와 달리 Hilt 사용자는 Dagger의 Components를 직접 정의하거나 인스턴스화하지 않는다. 대신 Hilt는 사용자를 위해 생성되는 미리 정의된 Components를 제공한다. Hilt는 안드로이드 애플리케이션의 다양한 라이프 사이클에 맞춰 자동으로 통합되는 Components(및 해당 Scope Annotaion) 세트가 제공된다. 아래 Diagram은 Hilt Component의 계층 구성도를 보여준다. 각 Component의 주석은 해당 Component의 수명으로 바인딩 범위를 지정하는 데 사용되는 범위 지정 주석이다. Component의 화살표는 하위 Components를 가리킨다. 일반적으로 하위 Components의 바인딩은 상위 ..

[Android] Hilt AndroidEntryPoint Annotation

Introduce Application에서 멤버 주입을 사용 가능으로 설정한 후, @AndroidEntryPoint Annotation을 사용하여 다른 Android class에서 멤버 주입을 사용 가능으로 설정할 수 있다. 다음 유형에서 @AndroidEntryPoint를 사용할 수 있다. Activity Fragment View Service BroadcastReceiver @AndroidEntryPoint class MyActivity : MyBaseActivity() { // Bindings in SingletonComponent or ActivityComponent @Inject lateinit var bar: Bar override fun onCreate(savedInstanceState: B..

Foundation/Android 2022.11.20

[Android] Dive inti concept of Hilt Annotations. @_@

Introduce Hilt는 Android Application에 Dagger Dependency Injection을 통합하는 표준화된 방법을 제공한다. Hilt를 사용하면 Android 앱에 종속성 주입을 쉽게 추가할 수 있다. Hilt의 목표 Android Application을 위한 Dagger 관련 인프라를 단순화한다. 가독성, 이해 및 코드 공유를 용이하게 하는 Standard set of Components 및 Scopes를 만든다. 다양한 빌드 유형에 서로 다른 바인딩을 쉽게 프로비저닝 할 수 있는 방법을 제공한다. Hilt Application Hilt를 사용하는 모든 앱은 @HiltAndroidApp Annotation이 포함된 Application class를 사용해야 한다. @Hilt..

[Android] 종속 항목 삽입(Dependency Injection)이란?

Introduce 종속 항목 삽입을 구현하면 다음과 같은 이점을 누릴 수 있다. 코드 재사용 가능 리팩터링 편의성 테스트 편의성 종속성 항목 삽입이란? 클래스에는 흔히 다른 클래스 참조가 필요하다. 예를 들어 Car 클래스는 Engine 클래스 참조가 필요할 수 있다. 이처럼 필요한 클래스를 종속 항목이라고 하며, 이 예에서 Car 클래스가 실행되기 위해서는 Engine 클래스의 인스턴스가 있어야 한다. 클래스가 필요한 객체를 얻는 세 가지 방법은 다음과 같다. 클래스가 필요한 종속 항목을 구성한다. 위의 예에서 Car는 자체 Engine인스턴스를 생성하여 초기화한다. 다른 곳에서 객체를 가져온다. Context Getter 및 getSystemService()와 같은 일부 Android API는 이러한..

Foundation/Android 2022.11.19