flashlight_plugin 0.0.1
flashlight_plugin: ^0.0.1 copied to clipboard
A Flutter Plugin to control the flashlight on android devices that are Android 6.0 or higher
import 'package:flutter/material.dart';
import 'package:flashlight_plugin/flashlight_plugin.dart';
void main() {
runApp(const FlashlightApp());
}
class FlashlightApp extends StatefulWidget {
const FlashlightApp({super.key});
@override
State<FlashlightApp> createState() => _MyAppState();
}
class _MyAppState extends State<FlashlightApp> {
bool _isFlashlightOn = false;
bool _hasFlashlight = false;
String _statusMessage = 'Checking flashlight...';
@override
void initState() {
super.initState();
_checkFlashlight();
}
Future<void> _checkFlashlight() async {
final hasFlash = await FlashlightPlugin.hasFlashlight();
setState(() {
_hasFlashlight = hasFlash;
_statusMessage = hasFlash
? 'Flashlight available'
: 'No flashlight available on this device';
});
}
Future<void> _toggleFlashlight() async {
if (!_hasFlashlight) {
setState(() {
_statusMessage = 'No flashlight available';
});
return;
}
bool success;
if (_isFlashlightOn) {
success = await FlashlightPlugin.turnOff();
} else {
success = await FlashlightPlugin.turnOn();
}
if (success) {
setState(() {
_isFlashlightOn = !_isFlashlightOn;
_statusMessage = _isFlashlightOn
? 'Flashlight is ON'
: 'Flashlight is OFF';
});
} else {
setState(() {
_statusMessage = 'Failed to toggle flashlight';
});
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
centerTitle: true,
title: const Text('Simple Flashlight'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
_isFlashlightOn ? Icons.flashlight_on : Icons.flashlight_off,
size: 100,
color: _isFlashlightOn ? Colors.yellow : Colors.grey,
),
const SizedBox(height: 30),
Text(
_statusMessage,
style: const TextStyle(fontSize: 18),
textAlign: TextAlign.center,
),
const SizedBox(height: 30),
ElevatedButton(
onPressed: _hasFlashlight ? _toggleFlashlight : null,
style: ElevatedButton.styleFrom(
padding: const EdgeInsets.symmetric(
horizontal: 40,
vertical: 15,
),
),
child: Text(
_isFlashlightOn ? 'Turn OFF' : 'Turn ON',
style: const TextStyle(fontSize: 18),
),
),
],
),
),
),
);
}
}