In Veritate Libertas

The Restricted
Section

A collection of spells,
experiments, and forbidden knowledge.

Programming (51)

Programming/[ Flutter ] 2026. 7. 16. 01:14

[Flutter] 플러터 #13 - ref.listen

ref.listen — Provider 값이 바뀔 때 "화면을 움직이고" 싶다면먼저 하나 짚고 갈게. ref.listen은 Provider 타입이 아니야. StreamProvider, FutureProvider처럼 뭔가를 새로 만드는 게 아니라, 이미 있는 Provider의 값 변화를 감지만 하는 메서드야. 아래 코드에서도 listenProvider라는 이름을 썼지만, 실제로는 그냥 평범한 StateProvider야.import 'package:flutter_riverpod/flutter_riverpod.dart';// 그냥 StateProvider를 하나 선언한 것뿐 - 이름이 listenProvider라고 특별한 게 아님final listenProvider = StateProvider((ref) =>..

Programming/[ Flutter ] 2026. 7. 16. 01:06

[Flutter] 플러터 #12 - AutoDispose

화면 나가도 안 사라지던 그 Provider — AutoDispose지난 글에서 StreamProvider 봤을 때, 스트림 구독이 화면 나가도 계속 살아있다고 했잖아. 사실 이건 StreamProvider만의 문제가 아니야 — Riverpod의 Provider는 기본적으로 한 번 만들어지면 앱이 끝날 때까지 안 사라져. 아무도 안 보고 있어도 계속 메모리에 남아있는 거야. 이걸 해결하는 게 .autoDispose야.AutoDispose가 뭐야Provider가 더 이상 쓰이지 않을 때 알아서 없어지게 해주는 옵션이야. 별도의 클래스가 아니라, 기존 Provider 뒤에 .autoDispose를 하나 붙이는 것만으로 켤 수 있는 기능이야.Provider 생명주기를 생각해보면 이래. 원래 Provider는 ..

Programming/[ Flutter ] 2026. 7. 16. 01:00

[Flutter] 플러터 #11 - StreamProvider

FutureProvider 다음은 StreamProvider — 계속 흘러오는 데이터는 어떻게 다뤄?FutureProvider 쓸 때 state.when(data, error, loading)으로 비동기 상태 처리했던 거 기억나지? StreamProvider도 똑같은 패턴이야. 다른 점 딱 하나만 이해하면 돼 — Future는 값을 한 번 주고 끝이고, Stream은 값을 계속 흘려보내.Future랑 Stream, 뭐가 다른데StreamProvider는 이 Stream을 감싸서 UI가 편하게 구독할 수 있게 해주는 Provider야. 이걸 쓰면 좋은 점이 몇 가지 있어.스트림 관리가 편해져: 스트림 상태·데이터 변화를 감지하고, 그때그때 UI를 알아서 업데이트해줘여러 위젯이 같은 데이터를 공유해: 스트림..

Programming/[ Flutter ] 2026. 7. 6. 16:44

[Flutter] 플러터 #10 - FutureProvider

FutureProvider, 비동기 결과를 Provider로 관리하기지금까지 StateProvider, StateNotifierProvider로 동기적인 상태를 관리했어. 이번엔 비동기 작업의 결과를 Provider로 관리하는 FutureProvider를 써볼게. 앞서 Dart 비동기 글에서 Future를 다뤘는데, 그게 Riverpod이랑 만나면 이렇게 돼.비동기 작업을 왜 Provider로 관리해?네트워크 요청, 파일 로딩, DB 조회 같은 비동기 작업은 결과가 나올 때까지 기다려야 해. 이 시간 동안 사용자에게 로딩 인디케이터를 보여줘야 하고, 에러가 나면 에러 메시지도 보여줘야 해.FutureProvider 없이 이걸 구현하려면 이렇게 해야 해.class MyWidget extends Statef..

Programming/[ Flutter ] 2026. 7. 6. 16:37

[Flutter] 플러터 #09 - 상태 관리 : StateNotifierProvider

StateNotifierProvider, 복잡한 상태는 이걸로지난 글에서 StateProvider로 단순한 값 하나를 전역으로 관리하는 걸 봤어. 근데 실제 앱에서는 상태가 그렇게 단순하지 않아. 체크박스 목록처럼 여러 값이 묶인 복잡한 상태, 그리고 그걸 바꾸는 로직이 함께 있어야 할 때 StateNotifierProvider를 써.StateProvider로는 왜 안 돼?체크박스 목록을 StateProvider로 관리하려면 이렇게 해야 해.// ❌ StateProvider로 억지로 쓰는 경우final checklistProvider = StateProvider>>((ref) => [ {'name': '김치', 'isSelected': false}, {'name': '라면', 'isSelected':..

Programming/[ Flutter ] 2026. 7. 2. 23:20

[Flutter] 플러터 #08 - 상태 관리 : StateProvider

StateProvider, 단순한 상태는 이걸로지난 글에서 ref.watch, ref.read, ConsumerWidget을 잡았으니까 이번엔 실제로 상태를 관리하는 Provider를 써볼 차례야. 첫 번째로 볼 건 StateProvider — 가장 단순한 형태의 상태 관리야.StateProvider가 뭐야?int, bool, String 같은 단순한 값 하나를 전역으로 관리할 때 써. 내부에 별도 로직 없이 값만 들고 있으면 될 때 딱 맞아.// 선언 — 보통 별도 파일에 분리해서 전역으로 씀final numberProvider = StateProvider((ref) => 0);// ↑ 초기값이게 전부야. 지난 provider 글에..

Programming/[ Flutter ] 2026. 7. 2. 19:43

[Flutter] 플러터 #07 - Consumer & riverpod 기초

riverpod 기초, ref가 뭔지부터 잡고 가자지난 글에서 provider 패키지를 썼는데 이번부터는 riverpod으로 넘어가. 문법이 좀 달라 보이지만 개념은 거의 같아. 다른 점은 context 없이 쓸 수 있고, 컴파일 타임에 에러를 잡아줘.riverpod 설치[yaml 파일]# pubspec.yamldependencies: flutter_riverpod: ^2.0.0앱 최상단에 ProviderScope로 감싸줘야 해. 이게 없으면 riverpod이 동작하지 않아.void main() { runApp( ProviderScope( // 반드시 필요 child: MyApp(), ), );}ProviderScope가 모든 Provider를 저장하고 관리하는 컨테이너야. 앱 ..

Programming/[ Flutter ] 2026. 7. 2. 18:40

[Flutter] 플러터 #06 - Provider

Provider — 상태관리, 왜 필요하고 어떻게 시작해?Flutter 앱을 만들다 보면 어느 순간 setState()가 버거워지는 순간이 와. 화면이 하나일 땐 괜찮은데 화면이 여러 개가 되고 공유해야 하는 데이터가 생기면서부터야. 이번엔 상태관리가 왜 필요한지, 그리고 provider 패키지로 어떻게 해결하는지 정리해봤어.setState()의 한계setState()는 그 위젯 안에서만 상태가 유효해. 다른 화면과 값을 공유하려면 생성자로 계속 넘겨줘야 하는데, 화면이 깊어질수록 이게 한계에 부딪혀.// 이런 상황이 생겨ScreenA → ScreenB → ScreenC → ScreenD ↑ 여기서 값 바꾸면 A까지 어떻게 올려보내?값을 올려보내려면 콜백 함수를 계속 생성자로 넘겨..

Programming/[ Flutter ] 2026. 6. 23. 17:15

[Flutter] 플러터 #05 - 스트림(stream)

Flutter #05 — Stream, 데이터가 흘러오는 통로저번에 Future로 단발성 비동기 처리를 봤는데, 이번엔 Stream이야. 처음 개념 들었을 때 "Future랑 뭐가 달라?"라는 생각부터 들었어. 코드 짜보고 나서야 "아, 얘는 계속 흘러오는 거구나"라는 게 체감됐어.데이터를 유형으로 나눠보면Stream을 이해하는 제일 빠른 방법이 이 표야. 즉시 사용 가능 기다려야 사용 가능단일 데이터intFuture복수 데이터ListStreamint: 그냥 값. 바로 쓸 수 있어Future: 나중에 단 하나의 값이 와. 이전 글에서 다뤘어List: 여러 값이 이미 다 있어. 바로 쓸 수 있어Stream: 여러 값이 시간 차를 두고 계속 흘러와Stream는 Future의 복수 버전이야. Future가 편..

Programming/[ Flutter ] 2026. 6. 22. 22:02

[Flutter] 플러터 #04 - 비동기 처리

Flutter #04 — 비동기 처리, 언제 기다리고 언제 안 기다려?Flutter 앱 만들다 보면 서버에서 데이터 받아오는 코드를 짜야 하는 순간이 생겨. 그때 Future, async, await가 나오는데 처음엔 왜 이게 필요한지 잘 와닿지 않을 수 있어. 이 글이 도움이 되면 좋겠다.동기 vs 비동기 — 뭐가 달라?동기(Synchronous)는 순서대로 기다리는 방식이야. A 작업이 끝나야 B 작업을 시작할 수 있어. 서버에 요청을 보냈으면 응답이 올 때까지 다음 코드는 실행되지 않아.비동기(Asynchronous)는 기다리지 않는 방식이야. 서버에 요청을 보내고 응답을 기다리는 동안 다음 코드가 계속 실행돼. 나중에 응답이 오면 그때 결과를 처리해.카페에 비유하면 이래.동기: 커피 주문하고 카운..