| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- LLM
- riverpod
- abap
- nodejs
- 단축키
- firebase
- develop
- 자바 포맷 출력
- 엡
- lifecycle
- scss
- 자바 출력 방식
- react
- java 콘솔 출력 차이
- Clean Architecture
- ListView
- JQ
- 배포
- 앱심사
- 자바스크립트
- DART
- JS
- UI/UX
- java 출력
- npm
- printf
- println
- Flutter
- java
- unity
- Today
- Total
목록Flutter (15)
guricode
https://medium.com/flutter/meet-the-flutter-extension-for-gemini-cli-f8be3643eaad Meet the Flutter Extension for Gemini CLIBuild high quality, feature rich apps with the new Flutter Extension for Gemini CLIblog.flutter.dev 미디움에서 플러터 관련글을 검색하던 중에 flutter extension을 발견하여 설치해봤다. 이 포스트에서는 간단한 설정과 사용방법 후기를 남긴다. flutter 용으로 튜닝된 느낌의 LLM인것같다. 파워쉘에서 실행선행 설치Node.js 18+ 설치. 확인: node -v Google Codelabs+1G..
Clean Architecture는 비즈니스 로직(Domain)을 UI나 데이터 소스와 분리해의존성이 한 방향으로만 흐르도록 만든 구조다.Flutter에서는 Presentation–Domain–Data 세 레이어로 나누어ViewModel이 UseCase를 호출하고, Repository를 통해 Firestore나 API에 접근한다.[Presentation Layer] → UI, ViewModel, Provider 등[Domain Layer] → Entity, UseCase (비즈니스 로직)[Data Layer] → Repository, DataSource (API, DB, Firebase 등)UI(View)는 UseCase만 호출UseCase는 Repositor..
Isolate는 dart에서 병렬작업을 수행하기 위한 독립 실행 환경이다.Dart는 기본적으로 단일 스레드 언어이기 때문에 CPU를 많이 사용하는 연산(이미지 처리, 대용량 Json파싱)을 메인 isolate(UI스레드)에서 처리하면 UI가 멈춘다.이를 방지하기 위해 dart는 여러 Isolate를 만들어 각각 독립된 메모리와 이벤트 루프에서 동시실행시킨다.메인 Isolate(UI 스레드)와 분리되어 동작하며, 메모리를 공유하지 않고 메시지로만 통신한다. Main Isolate (UI 스레드) ↓ SendPort → Message → ReceivePort ↓ Sub Isolate (별도 스레드)기본 구조Dart는 기본적으로 1개의 메인 Isolate(UI)에서 실행됨역할무거운 연산을 별도의..
1.무한스크롤 무한 스크롤은 스크롤이 목록 끝에 가까워지면 다음페이지를 비동기로 로드한다.핵심은 ScrollController의 position.pixels / maxScrollExtent를 감지하는 것이다.class InfiniteList extends StatefulWidget { const InfiniteList({super.key}); @override State createState() => _InfiniteListState();}class _InfiniteListState extends State { final _c = ScrollController(); final _items = []; bool _loading = false; int _page = 0; @override voi..
스로틀링과 디바운싱은 사용자 이벤트 제어성능 최적화에 관한 내용이다. 스로틀링(Throttling)은 이벤트가 자주 발생해도 일정시간 간격으로만 실행되도록 제한하는기법이다.스크롤 드래그 api 호출 등에서 과도한 호출을 막아 성능을 최적하 하기 위함이다.보통 마지막 실행후 일정시간이 지난 후 실행하도록 하는 방법을 사용한다.import 'dart:async';class Throttler { Throttler(this.delay); final Duration delay; Timer? _timer; bool _ready = true; void run(void Function() action) { if (_ready) { _ready = false; action(); ..
MVVM패턴이란?구분 설명정의Model–View–ViewModel 패턴은 UI(View), 로직(ViewModel), 데이터(Model)를 분리한 구조다.구성 요소 Model데이터 원본, API, RepositoryView사용자에게 보이는 화면 (Widget)ViewModelState상태 관리, Model 데이터 가공, 사용자 입력 이벤트 및 비즈니스로직 처리흐름 구조View → ViewModel → Model → ViewModel → View (단방향) MVVM은 Model–View–ViewModel 구조로, 화면(UI)과 로직을 완전히 분리하는 아키텍처다.Model은 데이터를 관리하고, ViewModel은 비즈니스 로직과 상태를 관리하며, View는 화면을 그리는 역할만 한다.이 세 가지가 명확히 ..
Riverpod은 Flutter에서 사용하는 의존성 주입 기반의 상태관리 라이브러리다. 기존의 프로바이더의 단점을 보완해 더 안전하고 테스트 가능한 구조를 제공한다.프로바이더 객체를 선언해 전역상태를 관리하고 ref를 통해 해당상태를 읽거나 감시(read, watch)한다. BuildContext에 의존하지않고 어디서든상태에 접근 가능하여 상태갱신을 자동으로 처리하는 상태관리 패던이다.흐름은 Provider선언 -> viewmodel에서 ref로 상태 조작, UI에서 ref.watch로 상태를 감시한다.Riverpod은 Provider의 철학을 계승하면서, “컴파일 타임 안정성 + 의존성 자동 추적”을 통해 실무 친화적 아키텍처 설계에 적합한 상태관리 패턴으로 발전했다. 예시코드// 상태 선언final ..
ListViewListView.builder SingleChildScrollView + Column렌더링 방식모든 아이템 한번에 생성화면에 보이는 것만 생성 (Lazy Loading)모든 자식 한번에 생성메모리 효율❌ 낮음✅ 매우 높음❌ 낮음성능⚠️ 아이템 많으면 느림✅ 아이템 많아도 빠름❌ 자식 많으면 느림사용 시점적은 고정 아이템 (많은 아이템 (20개 이상)복잡한 레이아웃, 스크롤 필요한 전체 화면아이템 개수고정적동적 가능고정적재사용성❌ 없음✅ 위젯 재사용❌ 없음빌드 타이밍한번에 모두필요할 때만한번에 모두스크롤 범위자동 계산자동 계산자식 크기 기반메모리 사용아이템 × 위젯 크기화면에 보이는 것만모든 자식 × 위젯 크기권장 사용 케이스메뉴, 설정 목록채팅, 피드, 무한 스크롤폼, 상세 페이지, 프로필..
StatefulWidget은 State를 가지는 위젯으로 상태를 관리할수있다.StatefulWidget에는 라이프사이클이 존재하는데 이 라이프사이클을 알고있어야 앱에서 상태관리에 유용하게 사용할수있다.1.createState() - State 객체 생성class MyWidget extends StatefulWidget { @override _MyWidgetState createState() => _MyWidgetState(); // StatefulWidget이 생성될 때 단 한 번만 호출 // State 객체를 생성하여 반환}state객체를 생성해준다. 처음 위젯이 삽입될때만 호출된다.2.initState()-초기화@overridevoid initState() { super.initState()..
Flutter 앱에서 상태(State)는 앱의 UI가 화면에 표시되는 시점의 데이터나 정보를 의미한다.쉽게 말해서 앱이 현재 어떤 모습을 보여줄지 결정하는 모든 변수와 값들이라고 할 수 있다.대표적으로는 카운터앱의 현재 숫자가 5인지 10인지의 상태, 로그인화면의 사용자가 로그인 했는지 안했는지의 상태 등등이다. Flutter에서는 상태가 변경되면 자동으로 UI를 다시 그린다. 이것이 rebuild다.상태변경 -> Flutter가 감지 -> 해당부분의 UI재구성 ->화면 업데이트 여기서 StatelessWidget에서는 상태가 없는 위젯으로 한번 생성되면 변하지 않는다. 예를들면 고정된 텍스트나 아이콘 같은 것들이가.StatefulWidget은 상태를 가진 위젯으로 시간이 지나면서 데이터가 변할 수 있..