Open In App

Flutter – How to Turn on Camera Flash

Last Updated : 04 Sep, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Flutter is a UI toolkit developed and maintained by Google. It was released in May 2017 to the public. It is now one of the most popular cross-platform development frameworks among beginners and experienced application developers. It has a straightforward learning curve and uses the Dart programming language for developing the applications.

Every smartphone generally has a flashlight on the backside of the phone. In this article, we will learn how that flashlight can be controlled in Flutter.

Approach

To control the flashlight in a Flutter app, we will use the camera package, this package will allow us to access the device’s camera functionalities including the flashlight.

Syntax

await _controller.setFlashMode(FlashMode.torch);

Example Project

The below example project shows how to use the flashlight using the camera package.

Note: Before running this code make sure that you have installed the camera package in your Flutter project. You can do so by running the below command from your project root:

 flutter pub add camera

Dart




import 'package:flutter/material.dart';
import 'package:camera/camera.dart';
  
void main() {
    runApp(const FlashlightApp());
}
  
class FlashlightApp extends StatefulWidget {
    const FlashlightApp({super.key});
  
    @override
    _FlashlightAppState createState() => _FlashlightAppState();
}
  
class _FlashlightAppState extends State<FlashlightApp> {
    late List<CameraDescription> cameras;
    late CameraController _controller;
    Color _bgColor = Colors.white;
  
    @override
    void initState() {
        initializeCamera();
        super.initState();
    }
  
    Future<void> initializeCamera() async {
        cameras = await availableCameras();
        _controller = CameraController(cameras[0], ResolutionPreset.low);
        await _controller.initialize();
    }
  
    Future<void> toggleFlashlight() async {
        if (_controller.value.isInitialized) {
            if (_controller.value.flashMode == FlashMode.off) {
                await _controller.setFlashMode(FlashMode.torch);
                setState(() {
                    _bgColor = Colors.greenAccent;
                });
            } else {
                await _controller.setFlashMode(FlashMode.off);
                setState(() {
                    _bgColor = Colors.white;
                });
            }
        }
    }
  
    @override
    void dispose() {
        _controller.dispose();
        super.dispose();
    }
  
    @override
    Widget build(BuildContext context) {
        return MaterialApp(
            title: "GFG- Flutter Flashlight App",
            home: Scaffold(
                backgroundColor: _bgColor,
                appBar: AppBar(
                    title: const Text('Flutter Flashlight App'),
                ),
                body: Center(
                    child: IconButton(
                        icon: const Icon(Icons.flash_on),
                        onPressed: toggleFlashlight,
                    ),
                ),
            ),
        );
    }
}


Output:

Since the back of the phone cannot be recorded on the screen. The background color of the screen is changed to green when the flashlight is on.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads