今回は、Flutterアプリでファイルを選択する機能を実装する際に便利なfile_pickerパッケージの使い方を紹介します。
file_pickerとは
file_pickerは、クロスプラットフォームでファイル選択ダイアログを表示し、ユーザーがデバイスからファイルを選択できるようにするためのFlutterパッケージです。このパッケージを使用すると、ドキュメント、画像、ビデオなどさまざまなファイルタイプを簡単に選択できます。
使用方法
以下のコードで、簡単にファイル選択機能を実装できます。
import 'package:flutter/material.dart';
import 'package:file_picker/file_picker.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: FilePickerDemo(),
);
}
}
class FilePickerDemo extends StatefulWidget {
@override
_FilePickerDemoState createState() => _FilePickerDemoState();
}
class _FilePickerDemoState extends State<FilePickerDemo> {
String? _fileName;
Future<void> _pickFile() async {
FilePickerResult? result = await FilePicker.platform.pickFiles();
if (result != null) {
setState(() {
_fileName = result.files.first.name;
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('File Picker Demo')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: _pickFile,
child: Text('ファイルを選択'),
),
SizedBox(height: 20),
if (_fileName != null) Text('選択されたファイル: $_fileName'),
],
),
),
);
}
}
主なプロパティ
-
allowedExtensions
:許可するファイルの拡張子を指定(例:['jpg', 'pdf']
) -
allowMultiple
:複数ファイルの選択を許可するかどうか(デフォルトはfalse
) -
type
:選択するファイルのタイプ(例:FileType.image
、FileType.video
、FileType.any
)
使用例
Future<void> _pickFile() async {
FilePickerResult? result = await FilePicker.platform.pickFiles(
type: FileType.custom,
allowedExtensions: ['jpg', 'pdf'],
allowMultiple: true,
);
if (result != null) {
setState(() {
_fileName = result.files.map((file) => file.name).join(', ');
});
}
}
file_pickerの特徴
- クロスプラットフォーム対応:iOS、Android、Windows、macOS、Linuxで動作
- 多様なファイルタイプのサポート:ドキュメント、画像、ビデオ、音声ファイルなど
- 単一/複数ファイルの選択:単一ファイルだけでなく、複数ファイルの選択も可能
- セキュリティ:プライバシーとセキュリティを考慮した設計
最後に
Flutterの学習を始めたばかりの初心者ですが、file_pickerを使うことでアプリの機能を拡張することができました。この記事が少しでも役立てば幸いです。何か違う点や質問があれば、コメントで教えてください。よろしくお願いします!!