WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
Flutter
システム開発
ひとくちコードスニペット
[Flutter]Flutterで写真撮影を行うコードスニペット
こんにちは、株式会社MIXシステム開発担当のBloomです。
今回はFlutterで利用できるコードスニペットを紹介します。まずはこちらのパッケージを導入しましょう。
flutter pub add image_picker
次にiOS/Androidそれぞれへ権限の記載を行いましょう。
<plist version="1.0">
<dict>
<key>NSCameraUsageDescription</key>
<string>カメラを使用する理由を記載します</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>フォトライブラリにアクセスする理由を記載します</string>
</dict>
</plist>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
これでカメラ機能を利用する準備ができました。このまま画面を実装しましょう。
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'dart:io';
class CameraPage extends StatefulWidget {
@override
_CameraPageState createState() => _CameraPageState();
}
class _CameraPageState extends State<CameraPage> {
final ImagePicker _picker = ImagePicker();
Future<void> _pickImage(ImageSource source) async {
final pickedFile = await _picker.pickImage(source: source);
if (pickedFile != null) {
final timestamp = DateTime.now().toString();
Navigator.pop(context, '${source == ImageSource.camera ? '撮影' : '選択'}: $timestamp');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('写真を撮る / 選ぶ')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton.icon(
icon: Icon(Icons.camera_alt),
label: Text('カメラで撮影'),
onPressed: () => _pickImage(ImageSource.camera),
),
SizedBox(height: 20),
ElevatedButton.icon(
icon: Icon(Icons.photo),
label: Text('フォトライブラリから選択'),
onPressed: () => _pickImage(ImageSource.gallery),
),
],
),
),
);
}
}
カメラかフォトライブラリにアクセスしている部分は_pickImage関数となり、ImagePickerのpickImage関数の呼び出しで実現しています。
これだけで写真を取得することができました。良かったですね。