Akses Camera Menggunakan image_picker

Setelah proses instalasi plugin selesai, dapat digunakan untuk mengakses media library dan camera.

Buka file widgets/add_image.dart, lalu import library

import 'package:image_picker/image_picker.dart';

Pada class class _AddImageState, tambahkan code

  File _img;
  final picker = ImagePicker();

  Future<void> _takePic() async {
    final pickedFile =
        await picker.getImage(source: ImageSource.camera, maxWidth: 600);
    setState(() {
      if (pickedFile != null) {
        _img = File(pickedFile.path);
      } else {
        print('No image selected.');
      }
    });
  }

Masih pada class _AddImageState, pada FlatButton Take Pic, panggil fungsi _takePic pada onpress.

FlatButton.icon(
            icon: Icon(Icons.camera),
            label: Text('Take Pic'),
            textColor: Theme.of(context).primaryColor,
            onPressed: _takePic,
          ),

Berikut file akhir dari add_image.dart

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

import 'package:image_picker/image_picker.dart';

class AddImage extends StatefulWidget {
  @override
  _AddImageState createState() => _AddImageState();
}

class _AddImageState extends State<AddImage> {
  File _img;
  final picker = ImagePicker();

  Future<void> _takePic() async {
    final pickedFile =
        await picker.getImage(source: ImageSource.camera, maxWidth: 600);
    setState(() {
      if (pickedFile != null) {
        _img = File(pickedFile.path);
      } else {
        print('No image selected.');
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Row(
      children: [
        Container(
          width: 100,
          height: 100,
          decoration: BoxDecoration(
            border: Border.all(width: 1, color: Colors.grey),
          ),
          child: _img != null
              ? Image.file(
                  _img,
                  fit: BoxFit.cover,
                  width: double.infinity,
                )
              : Text(
                  'No Image',
                  textAlign: TextAlign.center,
                ),
          alignment: Alignment.center,
        ),
        SizedBox(
          width: 10,
        ),
        Expanded(
          child: FlatButton.icon(
            icon: Icon(Icons.camera),
            label: Text('Take Pic'),
            textColor: Theme.of(context).primaryColor,
            onPressed: _takePic,
          ),
        ),
      ],
    );
  }
}

Jika target Android <29, maka tidak ada tambahan konfigurasi. Sementara untuk 29+ diperlukan tambahan konfigurasi pada file android/app/src/main/AndroidManifest.xml.

Silakan lihat detailnya di https://pub.dev/packages/image_picker untuk mendapatkan informasi uptodate.

Sharing is caring:

Leave a Comment