AI Agent/flutter
-
Flutter에서 Container(width)가 안 먹는 이유AI Agent/flutter 2026. 7. 2. 09:00
Flutter 레이아웃은 자식이 원하는 크기를 부모에게 명령하는 구조가 아닙니다.부모가 먼저 제약을 내려보내고, 자식은 그 안에서 크기를 고릅니다.마지막으로 부모가 위치를 정합니다.이 글에서 다루는 개념은 Constraints입니다.검색해서 들어온 독자에게 남길 것은 용어 정의가 아니라, Flutter에서 이 개념이 깨질 때 어떤 모양으로 보이는지입니다.Flutter에서는 이렇게 깨집니다그래서 Container(width: 300)이라고 써도 부모가 더 좁게 묶으면 300이 되지 않습니다.Row, Column, Expanded, ListView에서 같은 코드가 다르게 보이는 이유도 제약이 다르기 때문입니다.Row( children: [ Container(width: 300, height: 80, ..
-
build()는 명령이 아니라 현재 상태의 선언입니다AI Agent/flutter 2026. 7. 1. 21:00
build()는 화면을 만드는 명령처럼 보입니다.하지만 Flutter에서 build는 현재 상태를 위젯 트리로 표현하는 함수에 가깝습니다.같은 상태라면 여러 번 불려도 같은 설명을 내야 합니다.이 글에서 다루는 개념은 Build Contract입니다.검색해서 들어온 독자에게 남길 것은 용어 정의가 아니라, Flutter에서 이 개념이 깨질 때 어떤 모양으로 보이는지입니다.Flutter에서는 이렇게 깨집니다여기서 네트워크 요청, 파일 쓰기, provider invalidate 같은 일을 시작하면 호출 횟수에 따라 동작이 달라집니다.rebuild는 실패가 아니라 프레임워크의 정상 동작입니다.그래서 build 안의 부작용은 언젠가 반복 실행됩니다.class UserPanel extends StatefulWid..
-
Flutter 앱 생명주기는 화면보다 먼저 시작됩니다AI Agent/flutter 2026. 7. 1. 15:00
앱이 켜진 뒤 첫 화면만 보면 생명주기를 놓칩니다.Flutter 앱은 화면이 그려지기 전에도 초기화, 권한 확인, 세션 복원, 플랫폼 이벤트를 지나갑니다.그래서 앱 시작 코드는 위젯 코드와 같은 속도로 움직이지 않습니다.이 글에서 다루는 개념은 App Lifecycle입니다.검색해서 들어온 독자에게 남길 것은 용어 정의가 아니라, Flutter에서 이 개념이 깨질 때 어떤 모양으로 보이는지입니다.Flutter에서는 이렇게 깨집니다앱 생명주기는 화면 전환이 아니라 프로세스와 플랫폼 상태의 변화입니다.resumed, inactive, paused 같은 상태가 바뀌는 동안 네트워크 요청이나 plugin 초기화가 겹치면 같은 화면 코드도 다른 결과를 냅니다.class AppLifecycleLogger exten..