| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 자바스크립트
- UI/UX
- Flutter
- Clean Architecture
- 배포
- firebase
- react
- java
- 단축키
- ListView
- println
- DART
- abap
- java 출력
- JQ
- JS
- npm
- 자바 출력 방식
- unity
- 자바 포맷 출력
- lifecycle
- 앱심사
- java 콘솔 출력 차이
- develop
- nodejs
- LLM
- scss
- printf
- 엡
- riverpod
- Today
- Total
목록2025/10/20 (13)
guricode
1) 플랫폼 채널 (Platform Channels)Flutter(Dart)와 Android(Kotlin)/iOS(Swift) 사이에 문자열 메서드 호출 + 직렬화된 메시지로 통신한다.단발 호출은 MethodChannel, 스트림 이벤트는 EventChannel, raw 메시지는 BasicMessageChannel을 쓴다.흐름Dart가 invokeMethod("getBattery") → 네이티브가 같은 채널 이름으로 핸들러 등록 → 결과 반환.예시: 배터리 잔량 조회 (MethodChannel)Dartimport 'package:flutter/services.dart';class NativeBridge { static const _ch = MethodChannel('app/native'); stati..
AOT (Ahead-Of-Time)는 코드를 앱 실행 전에 미리 기계어로 변환(컴파일) 하는 방식이다. 앱 실행속도가 빠르고 최적화된 바이너리를 생성한다. JIT (Just-In-Time)는 코드를 앱 실행 중에 즉시(런타임)에 컴파일하는 방식이다. 수정 후 즉시 반영 가능하여 개발단계에 유리하다.Flutter에서는 개발모드일때 JIT를 사용하고 릴리즈모드일땐 AOT를 사용한다. 구분 AOT (Ahead of Time) JIT (Just in Time)컴파일 시점실행 전에 미리 컴파일실행 중에 실시간 컴파일속도실행 빠름 (기계어로 미리 변환)초기 실행 느림 (컴파일 오버헤드)빌드 크기크기가 큼 (기계어 포함)상대적으로 작음Hot Reload❌ 불가✅ 가능사용 시점Release 빌드 (배포용)Debug..
1) Future / async-await자주사용하는 대표적인 비동기 처리 한 번 완료되는 비동기 작업(HTTP, 파일 I/O)을 처리한다.Future가 완료되면 콜백 실행. async/await로 동기처럼 작성.Future fetch() async { final res = await http.get(Uri.parse('...')); // await가 다음 줄 일시중단 return res.body;}에러: try/catch로 처리. 동시 실행은 Future.wait([...]).2) Stream 여러 값이 시간에 따라 연속 도착(소켓, 이벤트, 센서, 페이지네이션) 할때 사용한다.구독해 데이터/에러/완료를 받음.UI 연동: StreamBuilder(stream: ..., builder: ...).st..
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. 이미지 처리 관련 네이티브 기능image_picker 패키지를 사용하여 갤러리에서 이미지를 선택하는 기능을 구현// lib/data/datasources/image_picker_datasource_impl.dartclass ImagePickerDataSourceImpl implements ImagePickerDataSource { final ImagePicker _picker; @override Future> pickMultiImage() async { final pickedFiles = await _picker.pickMultiImage( imageQuality: 80, // 이미지 품질 설정 ); return pickedFiles; }}이 패키지는 Android..
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(); ..
애니메이션 속성 중 curve와 duratoin이 있다.Curve는 애니메이션이 시간에 따라 변화하는 속도를 정의하는 속성이다. 즉, 시작할때 느리게, 중간에 빠르게, 끝에서 다시 느리게 같은 자연스러운 움직임을 만들때 사용된다.Duration은 애니메이션이 얼마나 오래 지속될지를 설정한다. 밀리초 단위로 지정한다. (Duratoin(milliseconds: 500)) duration은 “시간의 길이”, curve는 “시간에 따른 속도의 형태”를 결정한다.AnimatedContainer( duration: const Duration(milliseconds: 600), // 총 0.6초 동안 curve: Curves.easeInOut, // 천천히 시작 → 빠르게 → 천천히 끝 width: isExp..
1.위젯트리Flutter의 모든 UI는 위젯으로 이루어진다. 위젯들은 부모 , 자식관계로 연결되어 트리(Tree)형태를 이룬다.앱 전체는 루트위젯(MaterialApp)부터 시작하며, Scaffold > Column > Text 같은 구조로 구성된다.위젯트리는 상태가 바뀌면 해당 위젯만 재빌드되어 효율적이다.요약하자면 위젯트리는 Flutter 앱릐 기본 구조이자 화면 랜더링의 기본 단위다.MaterialApp( home: Scaffold( appBar: AppBar(title: Text('Hello')), body: Column( children: [ Text('Widget Tree 예시'), ElevatedButton(onPressed: () {}, chi..