camera_overlay_window 0.0.1
camera_overlay_window: ^0.0.1 copied to clipboard
Flutter plugin that provides an overlay camera window for Android applications. This allows users to open a floating camera preview that remains on top of other apps.
example/lib/main.dart
import 'package:camera_overlay_window/camera_window.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:flutter_overlay_window/flutter_overlay_window.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const CameraWindow(),
);
}
}
class CameraWindow extends StatefulWidget {
const CameraWindow({super.key});
@override
State<CameraWindow> createState() => _CameraWindowState();
}
class _CameraWindowState extends State<CameraWindow> {
bool camera = false;
Future<void> _requestPermissions() async {
// Request Camera Permission
var cameraStatus = await Permission.camera.request();
if (cameraStatus.isDenied) {
await Permission.camera.request();
} else if (cameraStatus.isPermanentlyDenied) {
openAppSettings();
}
// Request Overlay Permission
bool isOverlayGranted = await FlutterOverlayWindow.isPermissionGranted();
if (!isOverlayGranted) {
await FlutterOverlayWindow.requestPermission();
}
}
@override
void initState() {
super.initState();
_requestPermissions(); // Request permissions on screen load
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
setState(() {
camera = !camera;
});
CameraWindo(camera); // Ensure CameraWindo is properly handled
},
child: Text(camera ? 'Stop Camera' : 'Start Camera'),
),
),
);
}
}