iBetter Books
수정

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)

복잡한 것부터 시작할 필요는 없습니다. 본인이 실제로 쓰고 싶은 도구를 만드는 것이 가장 오래 지속됩니다.