import 'dart:io'; import 'package:camera/camera.dart'; import 'package:flutter/material.dart'; import 'package:permission_handler/permission_handler.dart'; class CameraScreen extends StatefulWidget { const CameraScreen({super.key}); @override _CameraScreenState createState() => _CameraScreenState(); } class _CameraScreenState extends State { CameraController? controller; List? cameras; XFile? capturedImage; @override void initState() { super.initState(); initCamera(); } Future initCamera() async { await Permission.camera.request(); if (await Permission.camera.isGranted) { cameras = await availableCameras(); controller = CameraController(cameras![0], ResolutionPreset.high); await controller!.initialize(); setState(() {}); // update UI setelah kamera siap } } @override void dispose() { controller?.dispose(); super.dispose(); } @override Widget build(BuildContext context) { if (controller == null || !controller!.value.isInitialized) { return Center(child: CircularProgressIndicator()); } return Scaffold( appBar: AppBar( title: Text('Camera'), leading: IconButton( icon: Icon(Icons.arrow_back), onPressed: () { Navigator.pop(context); }, ), ), body: Stack( children: [ CameraPreview(controller!), if (capturedImage != null) Positioned.fill( child: Image.file(File(capturedImage!.path), fit: BoxFit.cover), ), Align( alignment: Alignment.bottomCenter, child: Padding( padding: const EdgeInsets.only(bottom: 30), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ FloatingActionButton( backgroundColor: Colors.white, onPressed: () async { final image = await controller!.takePicture(); setState(() { capturedImage = image; }); Navigator.pop(context, capturedImage?.path); }, child: Icon(Icons.camera_alt, color: Colors.black), ), ], ), ), ), ], ), // floatingActionButton: FloatingActionButton( // onPressed: () async { // final image = await controller!.takePicture(); // print('Gambar disimpan di: ${image.path}'); // // Bisa dilanjutkan untuk upload, crop, dll // }, // child: Icon(Icons.camera_alt), // ), ); } }