피드로 돌아가기
Dev.toFrontend
원문 읽기
Flutter-Supabase 기반의 역할 분리 및 State-Driven 동적 홈 라우팅 설계
Panduan Pengujian: Implementasi Widget, Properti, dan Arsitektur SaryPOS
AI 요약
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 분기 최적화