import 'package:flutter/material.dart'; import 'package:tugas_akhir_supabase/services/session_manager.dart'; /// Widget yang mendeteksi interaksi pengguna dan memperbarui timestamp aktivitas /// Gunakan widget ini di dalam layar atau komponen yang membutuhkan deteksi interaksi /// tetapi tidak secara otomatis terdeteksi oleh GestureDetector global di main.dart class InteractionDetector extends StatelessWidget { /// Widget anak yang akan dibungkus oleh detektor interaksi final Widget child; /// Apakah harus mencetak log debug saat interaksi terdeteksi final bool enableLogging; const InteractionDetector({ super.key, required this.child, this.enableLogging = false, }); @override Widget build(BuildContext context) { return GestureDetector( onTap: _updateInteraction, onPanDown: (_) => _updateInteraction(), onScaleStart: (_) => _updateInteraction(), onLongPress: _updateInteraction, behavior: HitTestBehavior.translucent, child: Listener( onPointerDown: (_) => _updateInteraction(), onPointerMove: (_) => _updateInteraction(), behavior: HitTestBehavior.translucent, child: Focus( onFocusChange: (hasFocus) { if (hasFocus) _updateInteraction(); }, child: child, ), ), ); } /// Memperbarui timestamp interaksi pengguna terakhir void _updateInteraction() { if (enableLogging) { debugPrint('InteractionDetector: User interaction detected'); } SessionManager.updateLastUserInteraction(); } } /// Extension untuk memberikan metode mudah untuk memperbarui timestamp interaksi extension InteractionUpdater on Widget { /// Membungkus widget dengan InteractionDetector Widget withInteractionDetection({bool enableLogging = false}) { return InteractionDetector(enableLogging: enableLogging, child: this); } }