개요
Flutter Alone은 데스크톱 Flutter 앱의 중복 실행을 방지하는 플러그인이다. 사용자가 이미 실행 중인 앱을 다시 열면, 새 인스턴스를 차단하고 기존 창을 자동으로 포커스한다. Windows에서는 글로벌 Mutex, macOS에서는 Lockfile 기반으로 동작한다.
주요 기능
- 단일 인스턴스 보장: Windows(Mutex)와 macOS(Lockfile) 각 플랫폼 네이티브 메커니즘 활용
- 기존 창 자동 포커스: 중복 실행 시 최소화·숨김 상태의 원래 창을 자동으로 복원하고 전면에 배치
- 다국어 알림 메시지: 영어, 한국어 기본 제공 및 커스텀 메시지 지원
- 유연한 설정: Mutex 이름 직접 지정, 패키지 ID 기반 자동 생성 등 다양한 설정 전략
- 디버그 모드 대응: 개발 중에는 중복 검사를 건너뛰어 핫 리로드 워크플로를 방해하지 않음
- 시스템 트레이 앱 호환: 트레이에 숨긴 앱도 정상적으로 감지하고 창을 복원
지원 플랫폼
| Windows | macOS | Linux |
|---|---|---|
| ✅ | ✅ | 🚧 |
기술적 특징
- 플랫폼별 네이티브 구현: Windows는 C API 기반 플러그인(
FlutterAlonePluginCApi), macOS는 Swift 기반 플러그인(FlutterAlonePlugin)으로 각 OS의 네이티브 API를 직접 호출한다. - 설정 객체 분리:
MutexConfig,MacOSConfig,MessageConfig등 관심사별로 설정을 분리하여 유연한 조합이 가능하다. - Lockfile 경로 관리: macOS에서는 네이티브 임시 디렉토리 API를 사용해 lockfile 경로를 관리하며,
path_provider의존성을 제거했다. - 다중 사용자 계정 지원: 같은 머신에서 다른 사용자 계정으로 실행된 인스턴스도 감지할 수 있다.
왜 주목할까?
데스크톱 앱에서 중복 실행 방지는 흔한 요구사항이지만, Flutter 생태계에서 이를 전문적으로 다루는 패키지는 드물다. Flutter Alone은 단순히 중복을 차단하는 것을 넘어, 기존 창 복원·시스템 트레이 호환·다국어 메시지·디버그 모드 예외 처리까지 실무에서 필요한 세부 사항을 꼼꼼하게 챙긴다. window_manager 같은 인기 패키지와의 호환성 가이드도 제공하여, 실제 프로덕션 환경에서 바로 적용할 수 있다.