httpdioBaseOptions로 베이스 URL·타임아웃·공통 헤더, Interceptor로 로깅·토큰 첨부·401 처리·에러 공통화, FormData/MultipartFile로 업로드, 대량 호출에 유리한 구조.http보다 많음. 인터셉터 남용 시 디버깅 어려움.retrofit (+ retrofit_generator / dio)dart:convert (기본 라이브러리)jsonEncode / jsonDecode만. 의존성 없음.json_annotation + json_serializable + build_runnerfromJson / toJson 코드 생성. 필드·이름 규칙 맞추기 쉬움.freezed (+ json_serializable)copyWith, 합 타입(union) 등까지.equatable== / hashCode를 값 비교로 쉽게.go_routerauto_route(작은 앱은 내장 Navigator만으로도 충분한 경우 많음.)
get_itDio, ApiClient, Repository 등록 후 한곳에서 꺼냄.injectable (+ get_it)참고: Riverpod만 쓰는 팀은 Provider로 Dio/Repository를 주입하고 get_it을 안 쓰기도 함.
shared_preferencessqflitedrift (구 Moor)hiveisarpath_providerflutter_secure_storagecached_network_imageflutter_svgcached_network_image 외octo_image: 로딩/에러 위젯 조합(선택).flutter_dotenv.env 파일에서 키 로드 (API 베이스 URL 등).--dart-define과 역할 나누기.--dart-define / --dart-define-from-fileloggerdebugPrint 대체로 흔함.talker / talker_dio_loggerpermission_handlerimage_picker / file_pickerdevice_info_plus / package_info_plusintlflutter_localizations + ARBconnectivity_plusweb_socket_channelinternet_connection_checker / 유사 패키지firebase_core, auth, firestore, messaging, analytics, crashlytics 등)google_maps_flutter / mapbox 등geolocatorapp_links / uni_links (구버전)gapSizedBox 대신 간격 위젯. 가독성.shimmerpull_to_refresh / 내장 RefreshIndicatorflutter_screenutilmocktail / mockitofake_async / clockhttp / 실무·인터셉터·업로드 많음 → dio (많은 팀 선호). 엔드포인트 폭발 → retrofit 검토.json_serializable, 더 복잡하면 freezed.go_router.shared_preferences, 구조화·쿼리 → sqflite/drift/isar 중 요구에 맞게.cached_network_image.flutter_secure_storage.permission_handler.logger.connectivity_plus.web_socket_channel.firebase_* 묶음.