피드로 돌아가기
Panduan Pengujian: Implementasi Widget, Properti, dan Arsitektur SaryPOS
Dev.toDev.to
Frontend

Flutter-Supabase 기반의 역할 분리 및 State-Driven 동적 홈 라우팅 설계

Panduan Pengujian: Implementasi Widget, Properti, dan Arsitektur SaryPOS

Aris Candra Muzaffar2026년 4월 13일14intermediate

Context

리테일 POS 시스템의 Owner와 Kasir 간 역할 기반 권한 제어 및 실시간 데이터 동기화 필요성 증대. 복잡한 상태 관리 라이브러리 도입 대신 Flutter 기본 기능을 활용한 경량 아키텍처 구현 지향.

Technical Solution

  • InheritedNotifier와 ChangeNotifier 조합을 통한 전역 상태 전파 구조 설계로 불필요한 Re-render 방지
  • GetMaterialApp의 builder 내 Stack 구조를 적용하여 전역 BannerNotifikasiInApp 레이어 상시 유지
  • _pilihHome() 함수 기반의 조건부 렌더링을 통해 Loading, Error, Owner-Auth, Main-Nav로 이어지는 동적 진입점 제어
  • Supabase Client를 싱글톤으로 관리하며 .env와 --dart-define을 혼용한 환경 변수 주입 체계 구축
  • Transactional Update 로직을 통해 Transaction Header 생성, Detail 삽입, Product Stock 차감의 순차적 데이터 정합성 확보
  • GetX의 Navigation 기능을 부분 도입하여 Owner 전용 Guard 및 Dialog 제어의 생산성 향상

- Client-side에 Service Role Key 포함 시 RLS 우회 위험 존재하므로 Edge Function 도입 검토 필요 - 복잡한 상태 관리 도구 없이도 InheritedWidget으로 충분한 전역 상태 전파가 가능한지 규모 측정 - 앱 진입점(Home) 결정 로직을 별도 함수로 분리하여 인증 상태에 따른 UX 분기 최적화

원문 읽기