Camera Access in Flutter (original) (raw)

Last Updated : 07 Mar, 2025

To add images from the _camera in Flutter, we'll use the **image_picker package. For this, you'll need to use your real device.

Follow the below steps to display the images from the camera

Step 1: Create a new Flutter Application

Create a new Flutter application using the command Prompt. To create a new app, write the below command and run it.

flutter create app_name

To know more about it refer this article: Creating a Simple Application in Flutter

Step 2: Adding the Dependency

To add the dependency to the **pubspec.yaml file, add **image_picker as a dependency in the dependencies part of the pubspec.yamlfile, as shown below:

Dart `

dependencies: flutter: sdk: flutter image_picker: ^1.1.2

`

Now run the below command in the terminal.

flutter pub get

Step 3: Importing the Dependency

Use the below line of code in the **main.dart file to import the image_picker dependency.

import 'package:image_picker/image_picker.dart';

**Step 4: Follow the below flow

**- **Create a button: To access the camera.

Dart `

ElevatedButton( style: ElevatedButton.styleFrom( backgroundColor: Colors.green, foregroundColor: Colors.white ), child: Text('Select Image from Camera'), onPressed: selectFromCamera, ),

`

**selectFromCamera:

Dart `

Future selectFromCamera() async { final ImagePicker picker = ImagePicker(); // Use the instance method pickImage from the ImagePicker instance final XFile? pickedFile = await picker.pickImage(source: ImageSource.camera); if (pickedFile != null) { setState(() { cameraFile = File(pickedFile.path); }); } }

`

**- **Display the captured picture

Show the captured picture, if the user doesn't capture anything, then show "Sorry, nothing selected!".

Dart `

SizedBox( height: 200.0, width: 300.0, child: cameraFile == null ? Center(child: Text('Sorry, nothing selected!')) : Center(child: Image.file(cameraFile!)), ),

`

**Complete Source Code

**main.dart:

Dart `

import 'dart:io'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart';

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

class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: CameraAccess(), debugShowCheckedModeBanner: false, ); } }

class CameraAccess extends StatefulWidget { @override State createState() { return CameraAccessState(); } }

class CameraAccessState extends State { File? cameraFile; // Use nullable File as initially there's no image

Future selectFromCamera() async { final ImagePicker picker = ImagePicker(); // Use the instance method pickImage from the ImagePicker instance final XFile? pickedFile = await picker.pickImage(source: ImageSource.camera); if (pickedFile != null) { setState(() { cameraFile = File(pickedFile.path); }); } }

@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Camera Access"), backgroundColor: Colors.green, foregroundColor: Colors.white, actions: [ Text("GFG", textScaleFactor: 3), ], ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ ElevatedButton( style: ElevatedButton.styleFrom( backgroundColor: Colors.green, foregroundColor: Colors.white), child: Text('Select Image from Camera'), onPressed: selectFromCamera, ), SizedBox( height: 200.0, width: 300.0, child: cameraFile == null ? Center(child: Text('Sorry, nothing selected!')) : Center(child: Image.file(cameraFile!)), ), ], ), ), ); } }

`

**Output:

When no image is selected, the following will result:

c1

When the button is tapped, the mobile's camera will be opened to capture the image, as shown below:

When the image is captured, it will be displayed on the screen, as shown below:

c2