screensaver 1.0.2 copy "screensaver: ^1.0.2" to clipboard
screensaver: ^1.0.2 copied to clipboard

A customizable screen saver package that activates after a period of inactivity. Supports images, GIFs, and videos.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:screensaver/screensaver.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Screen Saver Demo',
      theme: ThemeData.dark(),
      // Wrap your entire app with ScreenSaverWrapper
      home: ScreenSaverWrapper(
        mediaItems: [
          // Local image asset
          ScreenSaverMedia.image('assets/images/syambhu.jpg'),

          // Network image
          ScreenSaverMedia.image(
            'https://missionhimalayatreks.com/wp-content/uploads/2023/12/Natural-beauty-of-Nepal.webp',
            placeholder:
                'assets/images/syambhu.jpg', // Fallback if network fails
          ),

          // Local GIF
          ScreenSaverMedia.gif('assets/gifs/nepal.gif'),

          // Local video
          ScreenSaverMedia.video('assets/videos/machhapuchre.mp4'),

          // Network video
          ScreenSaverMedia.video(
            'https://cdn.pixabay.com/video/2024/07/13/220945_tiny.mp4',
            placeholder: 'assets/images/syambhu.jpg',
          ),
        ],
        inactivityDuration: const Duration(seconds: 10), // 10 seconds for demo
        slideDuration: const Duration(seconds: 4),
        backgroundColor: Colors.black,
        slideCurve: Curves.linear,
        child: const HomeScreen(),
      ),
    );
  }
}

class HomeScreen extends StatefulWidget {
  const HomeScreen({super.key});

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  DateTime? _lastActiveTime;

  @override
  void initState() {
    super.initState();
    _lastActiveTime = DateTime.now();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Screen Saver Demo')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text(
              'Wait 10 seconds without interaction\nTap anywhere to reset timer',
              textAlign: TextAlign.center,
              style: TextStyle(fontSize: 20),
            ),
            const SizedBox(height: 30),
            ElevatedButton(
              onPressed: () {
                setState(() => _lastActiveTime = DateTime.now());
              },
              child: const Text('Reset Activity Timer'),
            ),
            const SizedBox(height: 20),
            StreamBuilder(
              stream: Stream.periodic(const Duration(seconds: 1)),
              builder: (context, snapshot) {
                final secondsSinceActive = DateTime.now()
                    .difference(_lastActiveTime ?? DateTime.now())
                    .inSeconds;
                final secondsRemaining = 10 - secondsSinceActive;

                return Text(
                  secondsSinceActive < 10
                      ? 'Screen saver in: ${secondsRemaining}s'
                      : 'Screen saver active! Tap to dismiss',
                  style: TextStyle(
                    fontSize: 18,
                    color: secondsSinceActive > 8
                        ? Colors.orange
                        : Colors.white,
                  ),
                );
              },
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          ScaffoldMessenger.of(context).showSnackBar(
            const SnackBar(content: Text('Activity detected! Timer reset')),
          );
          setState(() => _lastActiveTime = DateTime.now());
        },
        child: const Icon(Icons.touch_app),
      ),
    );
  }
}
2
likes
0
points
46
downloads

Publisher

verified publishersawin.com.np

Weekly Downloads

A customizable screen saver package that activates after a period of inactivity. Supports images, GIFs, and videos.

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, video_player

More

Packages that depend on screensaver