Flutter

    Widget, Element, RenderObject

    위젯은 UI의 config를 가지고있다. 엘레멘트는 위젯과 렌더오브젝트를 관리한다. (update를 관리) 렌더오브젝트는 실제로 UI를 그린다. 우리는 위젯을 선언적인 방식으로 작성하고, 실제로 UI의 라이프사이클을 관리하고 화면에 그리는건 각각 엘레멘트와 렌더오브젝트가 한다. 즉 우리가, 이 ‘컨테이너는 10만큼의 패딩을 가진 컨테이너야’ 라고 하면 플러터는 위젯에 대한 엘레멘트를 생성하고, 엘레멘트는 렌더오브젝트를 생성한다. 엘레멘트는 위젯과 렌더오브젝트 사이에서 둘에 대한 레퍼런스를 가지며 트리를 관리한다. 렌더오브젝트는 위젯을 참고하며 화면을 그린다. 심플하게 정의하면 이렇게된다. 위젯 - 엘레멘트 - 렌더오브젝트 Configuration for UI - lifecycle, WidgetTree M..

    [플러터] 상태관리 라이브러리들의 동작원리

    플러터의 상태관리 방법은 대표적으로 세가지가 있다. 1. bloc 2. provider 3. getX 흔히 이렇게 세가지로 분류하지만, 이 세가지를 구분하는건 의미가 없다. 왜냐하면 provider 나 getX나 결국은 bloc 패턴과 provider패턴을 구현하고 있기 때문이다. bloc은 그저 비지니스 로직을 담은 컴포넌트이므로 무엇이든 될 수 있다. 예를들어 Provider에서는 Notifier가 bloc이고, GetX에서는 GetXController가 bloc이라고 할 수 있다. # BLoC 패턴 BLoC stands for Business Logic Component. 블록패턴은 비지니스 로직 컴포넌트의 줄인말이다. Bloc 패턴의 목적은 비지니스 로직과 UI를 분리해서 유지보수하기 쉬운 앱을 ..

    스크롤 이벤트 처리하기 [ NotificationListener ]

    https://api.flutter.dev/flutter/widgets/NotificationListener-class.html 예제) NotificationListener( onNotification: (scrollNotification) { if (scrollNotification is ScrollStartNotification) { controller.pauseVideo(); } else if (scrollNotification is ScrollEndNotification) { controller.playVideo(); } return false; }, child: SingleChildScrollView( https://stackoverflow.com/questions/56071731/scrollc..