[flutter] get_it을 활용한 앱 키오스크 모드

본 게시물에서는 Flutter 앱에서 Kiosk 모드(Kiosk mode)로 전환하는 방법을 소개합니다. Kiosk 모드란 사용자가 특정 앱을 사용하는 동안 다른 앱으로 전환되지 않도록 하는 모드를 말합니다.

get_it 패키지 소개

get_it은 Flutter 앱에서 서비스 locator를 관리할 수 있게 해주는 패키지입니다. 이를 통해 각각의 화면 또는 클래스에서 직접적으로 서비스를 생성하거나 호출하지 않고, get_it을 통해 필요한 서비스를 가져와 사용할 수 있습니다.

Kiosk 모드 작성

Kiosk 모드를 작성하기 위해서는, 다음과 같은 단계를 따릅니다.

  1. get_it 패키지를 설치합니다. pubspec.yaml 파일에 다음을 추가합니다.
     dependencies:
       get_it: <latest_version>
    
  2. get_it을 초기화한 후, 앱이 Kiosk 모드로 실행되는지 여부를 판단하는 플래그를 설정해야 합니다.

     import 'package:flutter/material.dart';
     import 'package:get_it/get_it.dart';
        
     final getIt = GetIt.instance;
        
     void main() {
       WidgetsFlutterBinding.ensureInitialized();
          
       // ... 다른 초기 설정
          
       getIt.registerLazySingleton(() => KioskService());
        
       // Kiosk 모드 여부를 저장하는 플래그
       getIt.registerSingleton<KioskMode>(KioskMode());
       runApp(MyApp());
     }
    
  3. 다음으로, Kiosk 모드 여부를 관리할 KioskMode 클래스를 생성합니다.

     import 'package:flutter/material.dart';
        
     class KioskMode with ChangeNotifier {
       bool _isInKioskMode = false;
          
       bool get isInKioskMode => _isInKioskMode;
          
       void enableKioskMode() {
         _isInKioskMode = true;
         notifyListeners();
       }
          
       void disableKioskMode() {
         _isInKioskMode = false;
         notifyListeners();
       }
     }
    
  4. 마지막으로, 앱의 각 화면에서 Kiosk 모드 설정을 관리합니다.

     import 'package:flutter/material.dart';
     import 'package:get_it/get_it.dart';
        
     class HomeScreen extends StatelessWidget {
       final KioskMode _kioskMode = getIt.get<KioskMode>();
          
       @override
       Widget build(BuildContext context) {
         return Scaffold(
           appBar: AppBar(
             title: Text('Home'),
           ),
           body: Center(
             child: ElevatedButton(
               onPressed: () {
                 _kioskMode.enableKioskMode(); // Kiosk 모드 활성화
               },
               child: Text('Enable Kiosk Mode'),
             ),
           ),
         );
       }
     }
    

위의 단계를 따라서 get_it 패키지를 활용하여 Flutter 앱에서 Kiosk 모드를 구현할 수 있습니다. Kiosk 모드는 특정 업무나 이벤트에서 사용자가 특정한 기능만을 사용할 수 있도록 하는 등 다양한 상황에서 유용하게 활용될 수 있습니다.

더 많은 기능과 설정을 살펴보려면 get_it 공식 문서를 참고하세요.

참고 자료