Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'dart:async';
- import 'dart:io';
- import 'package:camera/camera.dart';
- import 'package:flutter/material.dart';
- Future<void> main() async {
- WidgetsFlutterBinding.ensureInitialized();
- final cameras = await availableCameras();
- final firstCamera = cameras.first;
- runApp(
- MaterialApp(
- theme: ThemeData.dark(),
- home: TakePictureScreen(
- camera: firstCamera,
- ),
- ),
- );
- }
- // A screen that allows users to take a picture using a given camera.
- class TakePictureScreen extends StatefulWidget {
- const TakePictureScreen({
- Key? key,
- required this.camera,
- }) : super(key: key);
- final CameraDescription camera;
- @override
- TakePictureScreenState createState() => TakePictureScreenState();
- }
- class TakePictureScreenState extends State<TakePictureScreen> {
- late CameraController _controller;
- late Future<void> _initializeControllerFuture;
- @override
- void initState() {
- super.initState();
- _controller = CameraController(
- widget.camera,
- ResolutionPreset.medium,
- );
- _initializeControllerFuture = _controller.initialize();
- }
- @override
- void dispose() {
- _controller.dispose();
- super.dispose();
- }
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(title: const Text('Take a picture')),
- body: FutureBuilder<void>(
- future: _initializeControllerFuture,
- builder: (context, snapshot) {
- if (snapshot.connectionState == ConnectionState.done) {
- return CameraPreview(_controller);
- } else {
- return const Center(child: CircularProgressIndicator());
- }
- },
- ),
- floatingActionButton: FloatingActionButton(
- onPressed: () async {
- try {
- await _initializeControllerFuture;
- final image = await _controller.takePicture();
- await Navigator.of(context).push(
- MaterialPageRoute(
- builder: (context) =>
- DisplayPictureScreen(imagePath: image.path),
- ),
- );
- } catch (e) {
- print(e);
- }
- },
- child: const Icon(Icons.camera_alt),
- ),
- );
- }
- }
- // A widget that displays the picture taken by the user.
- class DisplayPictureScreen extends StatelessWidget {
- final String imagePath;
- const DisplayPictureScreen({Key? key, required this.imagePath})
- : super(key: key);
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(title: const Text('Display the Picture')),
- body: Image.file(File(imagePath)),
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement