FLUTTER ECOSYSTEM

ParthSheth021299/in_app_idle_detector

一個輕量級的 Flutter 插件,可在所有平台(Android、iOS、Web、Windows、macOS 和 Linux)上偵測 **使用者無活動(閒置狀態)**。非常適合銀行應用程式、安全儀表板或任何需要在使用者進入閒置狀態時做出反應的應用程式。

in_app_idle_detector 專案封面
Stars
1
Forks
4
最近推送(UTC)
2025年6月26日
專案狀態
未封存
Parth Sheth GitHub avatar
GITHUB User

Parth Sheth ↗

🚀 Flutter Developer | Building Beautiful Cross-Platform Apps 📱 2 Years of Flutter Experience | 💡 Passionate About Crafting Engaging User Experiences🌐

語言C++CMakeDartSwiftCRubyKotlinHTMLObjective-C

此儲存庫發佈的套件

使用的依賴

依賴清單 6 項
  • flutter{"sdk":"flutter"}
  • flutter_web_plugins{"sdk":"flutter"}
  • web^1.0.0
  • plugin_platform_interface^2.0.2
  • flutter_test開發依賴{"sdk":"flutter"}
  • flutter_lints開發依賴^5.0.0

原始 README

以下為英文專案原文快照,最新內容請造訪 GitHub。

展開 / 收合專案 README

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!