Ch 02. 더 배울 거리
이 교재는 Dart의 넓은 영역을 훑었지만, 각 분야는 훨씬 깊습니다. 관심 있는 방향으로 더 깊이 파고들 수 있도록 다음 학습 경로를 제시합니다.
Flutter 심화
Flutter를 더 깊이 공부하고 싶다면 다음 주제를 추천합니다.
Riverpod — Provider의 진화형입니다. ref.watch, ref.read, @riverpod 코드 생성으로 더 안전하고 유연한 상태 관리가 가능합니다. 2024년 기준 Flutter 커뮤니티에서 가장 많이 추천되는 상태 관리 솔루션입니다.
pub.dev: flutter_riverpod
공식 문서: riverpod.dev
Bloc — Business Logic Component 패턴입니다. 이벤트를 받아 상태를 변환하는 방식으로, 대규모 팀에서 일관성을 유지하기 좋습니다.
pub.dev: flutter_bloc
공식 문서: bloclibrary.dev
Go Router — Flutter의 선언형 라우팅 패키지입니다. 딥링크, 중첩 라우트, 가드(인증 체크)를 쉽게 구현할 수 있습니다.
pub.dev: go_router
애니메이션 — Flutter의 진짜 강점 중 하나입니다. AnimationController, Tween, AnimatedBuilder로 커스텀 애니메이션을 만들 수 있습니다. Rive 같은 도구로 만든 애니메이션을 Flutter에 임베드하는 방법도 있습니다.
서버사이드 Dart 심화
shelf — dart_frog의 기반이 되는 저수준 HTTP 라이브러리입니다. 미들웨어 파이프라인을 직접 구성할 수 있습니다.
pub.dev: shelf
serverpod — Dart 전용 풀스택 프레임워크입니다. ORM, 인증, 실시간 통신, 코드 생성이 포함되어 있어 dart_frog보다 훨씬 많은 기능을 제공합니다. 대규모 프로젝트에 적합합니다.
공식 문서: serverpod.dev
grpc — gRPC/Protobuf 기반 서비스를 Dart로 구현할 수 있습니다. 마이크로서비스 환경에서 서비스 간 통신에 활용됩니다.
pub.dev: grpc
Dart FFI
Dart FFI(Foreign Function Interface)는 C 라이브러리를 Dart에서 직접 호출하는 기능입니다. 이미지 처리 라이브러리, 암호화 라이브러리, 플랫폼 네이티브 기능을 Dart 앱에서 사용할 수 있습니다.
// C 함수 호출 예제
import 'dart:ffi';
typedef AddC = Int32 Function(Int32, Int32);
typedef AddDart = int Function(int, int);
final lib = DynamicLibrary.open('mylib.so');
final add = lib.lookupFunction<AddC, AddDart>('add');
print(add(3, 4)); // 7
성능이 중요한 연산을 C로 작성하고 Dart에서 호출하는 방식으로 활용됩니다.
테스트 심화
이 교재에서는 유닛 테스트와 mockito를 다뤘습니다. 더 나아가 통합 테스트와 위젯 테스트를 배울 수 있습니다.
Flutter에서는 flutter_test 패키지로 위젯 테스트를 작성합니다. 실제 디바이스 없이 위젯의 동작을 검증합니다.
testWidgets('로그인 버튼이 표시된다', (tester) async {
await tester.pumpWidget(const LoginScreen());
expect(find.text('로그인'), findsOneWidget);
});
integration_test 패키지로는 실제 앱을 실행하는 E2E 테스트를 작성할 수 있습니다.
생태계와 커뮤니티
Dart와 Flutter 생태계를 계속 팔로우하는 방법입니다.
- pub.dev: 새로운 패키지와 인기 패키지 동향 확인
- Flutter Weekly: 주간 뉴스레터 (flutterweekly.net)
- This Week in Flutter: Google의 공식 YouTube 시리즈
- Flutter Community on Discord: 실시간 질문과 답변
- r/FlutterDev: Reddit 커뮤니티
- GitHub Discussions: 각 패키지의 공식 토론 채널
Dart와 Flutter의 공식 블로그(medium.com/dartlang, medium.com/flutter)도 새로운 기능과 베스트 프랙티스를 정기적으로 게시합니다.
실전 프로젝트 아이디어
배운 것을 응용해 볼 수 있는 프로젝트 아이디어입니다.
- 개인 가계부 앱 (Flutter + dart_frog + PostgreSQL)
- GitHub 저장소 통계 CLI 도구 (dart:io + http + GitHub API)
- 마크다운 변환 패키지 pub.dev 배포
- 실시간 채팅 앱 (WebSocket + Riverpod)
- 스터디 플래너 앱 (Flutter + 알림 + 로컬 DB)
복잡한 것부터 시작할 필요는 없습니다. 본인이 실제로 쓰고 싶은 도구를 만드는 것이 가장 오래 지속됩니다.