secure_guard 0.2.0 copy "secure_guard: ^0.2.0" to clipboard
secure_guard: ^0.2.0 copied to clipboard

Blocks sensitive screens while an audio or video call, a screen recording or a remote control session is active on the device.

example/lib/main.dart

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

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await SecureGuard.instance.start(
    const SecureGuardConfig(
      allowedAccessibilityServices: {'com.google.android.marvin.talkback'},
    ),
  );
  runApp(const ExampleApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      builder: (context, child) => SecureGuardOverlay(
        blockedBuilder: (context, state) => BlockedScreen(state: state),
        child: child!,
      ),
      home: const HomePage(),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('secure_guard')),
      body: StreamBuilder<SecureGuardState>(
        stream: SecureGuard.instance.states,
        initialData: SecureGuard.instance.value,
        builder: (context, snapshot) {
          final state = snapshot.data ?? const SecureGuardState();
          return Center(
            child: Text(
              state.isBlocked
                  ? 'Threats: ${state.threats.map((t) => t.name).join(', ')}\n'
                      'Sources: ${state.sources.join(', ')}'
                  : 'Device is clean',
              textAlign: TextAlign.center,
            ),
          );
        },
      ),
    );
  }
}

class BlockedScreen extends StatelessWidget {
  const BlockedScreen({required this.state, super.key});

  final SecureGuardState state;

  @override
  Widget build(BuildContext context) {
    return ColoredBox(
      color: Colors.black,
      child: Center(
        child: Padding(
          padding: const EdgeInsets.all(32),
          child: Text(
            'App is locked while ${state.threats.map((t) => t.name).join(', ')} '
            'is active.',
            style: const TextStyle(color: Colors.white, fontSize: 18),
            textAlign: TextAlign.center,
          ),
        ),
      ),
    );
  }
}
0
likes
160
points
27
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Blocks sensitive screens while an audio or video call, a screen recording or a remote control session is active on the device.

Repository (GitHub)
View/report issues

Topics

#security #screen-capture #remote-access

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on secure_guard

Packages that implement secure_guard