Search packages, repositories and app categories

in_app_idle_detector cover
Package detailsv0.0.1

in_app_idle_detector

A Flutter plugin to detect user inactivity (idle) across all platforms.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
174
Likes
6
Pub points
150

Install package

flutter pub add in_app_idle_detector

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

The in_app_idle_detector package is a cross-platform Flutter plugin that detects user inactivity (idle state) across Android, iOS, Web, macOS, Windows, and Linux. It monitors user interactions such as touch, mouse movements, and keyboard input to determine when the user has been inactive for a specified duration. This enables developers to trigger actions like screen timeouts, session expirations, or automatic logout features. The plugin is lightweight and integrates seamlessly into existing Flutter applications without requiring native code changes.

Use cases

  • Automatic session timeout
  • User activity tracking
  • Idle screen lock
  • Prevent unauthorized access
  • Auto-logout after inactivity

Key features

  • Cross-platform support
  • Real-time idle detection
  • Configurable idle duration
  • No native code required
  • Simple API integration

Suitable for

  • Security-sensitive apps
  • Time-based session management
  • Kiosk or public terminal apps
  • Apps requiring user engagement monitoring

Considerations

  • May consume minor battery on long-running apps
  • Requires permission on some platforms
  • Behavior may vary slightly between platforms
  • Not suitable for high-precision timing needs

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

Pub Version License Platform

💤 in_app_idle_detector

A lightweight Flutter plugin that detects user inactivity (idle state) across all platforms: Android, iOS, Web, Windows, macOS, and Linux.

Perfect for banking apps, secure dashboards, or any app that needs to react when the user goes idle.


✨ Features

  • 🔄 Detect inactivity after custom timeout
  • 👨‍💻 Keyboard, mouse, touch & app lifecycle supported
  • 🖥️ Cross-platform (Android, iOS, Web, Desktop)
  • ⏱️ Remaining time tracking
  • 🛠️ Lightweight – no native code
  • 🔐 Ideal for auto logout, lock screen, and productivity

📦 Installation

dependencies:
  in_app_idle_detector: ^0.0.1

Working Demo

DEMO DEMO DEMO DEMO

🧑‍💻 Usage

  1. Initialize the plugin (e.g. inside main())
void main() {
  runApp(MyApp());

  InAppIdleDetector.initialize(
    timeout: Duration(seconds: 10), // Set your own duration
    onIdle: () {
      // Called when user goes idle
      print("User is idle");
    },
    onActive: () {
      // Called when user becomes active again
      print("User is active");
    },
  );
}
  1. Show a dialog or take action on idle
showDialog(
  context: navigatorKey.currentContext!,
  builder: (_) => AlertDialog(
    title: Text("Idle Warning"),
    content: Text("You've been inactive for 10 seconds."),
    actions: [
      TextButton(
        onPressed: () {
          Navigator.of(navigatorKey.currentContext!).pop();
        },
        child: Text("Dismiss"),
      ),
    ],
  ),
);
  1. Extra API (Pause / Resume / Reset)
InAppIdleDetector.pause();  // Stop tracking temporarily
InAppIdleDetector.resume(); // Resume tracking
InAppIdleDetector.reset();  // Manually reset idle timer
  1. Get Remaining Time
final timeLeft = InAppIdleDetector.remainingTime;
final idleStatus = InAppIdleDetector.isIdle;

✅ Use Cases

🔒 Auto-logout after inactivity (e.g., in banking apps)

🔐 Lock screen on desktops after idle

⏱️ Countdown timers for session expiration

📉 Inactivity analytics and user behavior tracking

🧪 Platform Support

Platform Supported
✅ Android Yes
✅ iOS Yes
✅ Web Yes
✅ Windows Yes
✅ macOS Yes
✅ Linux Yes

📚 API Summary

Method Description initialize(...) Starts the idle detection system reset() Resets the timer (e.g. after activity) pause() Temporarily disables tracking resume() Resumes tracking isIdle Returns true if currently idle remainingTime Returns Duration until next idle trigger

💡 Tips

Always use navigatorKey.currentContext for dialogs to ensure it works from anywhere. You can build a visual countdown using remainingTime and a Timer.periodic.

Support the Project

If you find this plugin helpful, consider supporting its development:

Your support is greatly appreciated!

Bugs/Requests

Feel free to open an issue if you encounter any problems or think that the plugin is missing some feature.

sheth02parth1299@gmail.com

🙌 Author

Created by Parth Sheth 🧠 Contributions, stars, and feedback are welcome!

Categories

Dependencies

Dependency list 2 items

  • plugin_platform_interface^2.0.2
  • web^1.0.0

Source repository

Projects using this package

No data available yet.