Built a full-featured music player app with Flutter, focused on clean architecture, high performance, and professional code quality.
State Management:
Designed a clean Cubit architecture with a self-contained state pattern, single emit point to eliminate duplication, and bounds checking to prevent crashes. Used BlocSelector instead of BlocBuilder across all widgets to minimize unnecessary rebuilds — each widget only listens to the exact data it needs.
Performance Optimization:
Replaced SingleChildScrollView + List.generate with ListView.builder for efficient memory usage. Reduced multiple BlocBuilder instances inside List.generate to a single BlocSelector, cutting rebuilds dramatically. Used AnimatedContainer and AnimatedSwitcher for smooth UI transitions without performance cost.
Navigation & Architecture:
Implemented GoRouter with BlocProvider.value to share the same Cubit instance across multiple screens without recreating state. Followed Clean Architecture principles with clear separation between data, domain, and presentation layers. Reduced navigation parameters by passing unified models instead of raw data fields.
Tech Stack:
Flutter, Dart, Flutter Bloc, GoRouter, Flutter SVG, Custom Painters, Backdrop Filter, Animation Controllers, Profile Mode Performance Testing with Flutter DevTools.