一個適用於iOS和Android的Flutter插件,用於從圖像庫中獲取照片,並使用相機拍攝新照片。
本頭條核心宗旨
歡迎來到「技術剛剛好」作者,「技術剛剛好」是個人維護,每天至少更新一篇Flutter技術文章,實時為大家播報Flutter最新消息。如果你剛好也在關注Flutter這門技術,那就跟我一起學習進步吧,你的贊,收藏,轉發是對我個人最大的支持,維護不易,歡迎關注。
技術剛剛好經歷
近幾年,移動端跨平臺開發技術層出不窮,從Facebook家的ReactNative,到阿里家WEEX,前端技術在移動端跨平臺開發中大展身手,技術剛剛好作為一名Android開發,經歷了從Reactjs到Vuejs的不斷學習。而在2018年,我們的主角變成了Flutter,這是Goolge開源的一個移動端跨平臺解決方案,可以快速開發精美的移動App。希望跟大家一起學習,一起進步!
本文核心要點
Flutter的Image Picker插件,IOS Android 都能使用,可以從圖片庫中讀取照片,照片的清晰度,大小都可查看,而且還支持拍照。
2019年12月10日 最近更新。獲取了17個點讚。目前版本是0.6.2 + 3更新內容如下:
author:從pubspec.yaml中刪除不推薦使用的欄位將插件遷移到pubspec平臺清單。需要Flutter SDK 1.10.0或更高版本。
添加教程
第一步去pubspec.yaml文件中添加如下代碼
dependencies: image_picker: ^0.6.2+3第二步點擊工具欄
flutter pub get
然後在需要的地方使用
import 'package:image_picker/image_picker.dart';IOS添加
將以下密鑰添加到您的Info.plist文件中<project root>/ios/Runner/Info.plist:
NSPhotoLibraryUsageDescription-描述您的應用為何需要照片庫權限。在視覺編輯器中,這稱為「 隱私-照片庫使用說明 」。NSCameraUsageDescription-說明為什麼您的應用需要訪問相機。在視覺編輯器中,這稱為「 隱私-相機使用說明 」。NSMicrophoneUsageDescription-說明您要錄製視頻的原因,為什麼您的應用需要使用麥克風。在可視編輯器中,這稱為「 隱私-麥克風使用說明 」。DEMO例子
import 'package:image_picker/image_picker.dart';class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState();}class _MyHomePageState extends State<MyHomePage> { File _image; Future getImage() async { var image = await ImagePicker.pickImage(source: ImageSource.camera); setState(() { _image = image; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Image Picker Example'), ), body: Center( child: _image == null ? Text('No image selected.') : Image.file(_image), ), floatingActionButton: FloatingActionButton( onPressed: getImage, tooltip: 'Pick Image', child: Icon(Icons.add_a_photo), ), ); }}Android系統回收處理
Android系統(儘管很少)有時會在image_picker完成後殺死程序。發生這種情況時,我們丟失了從image_picker中選擇的數據。retrieveLostData在這種情況下,您可以用來檢索丟失的數據。例如:
Future<void> retrieveLostData() async { final LostDataResponse response = await ImagePicker.retrieveLostData(); if (response == null) { return; } if (response.file != null) { setState(() { if (response.type == RetrieveType.video) { _handleVideo(response.file); } else { _handleImage(response.file); } }); } else { _handleError(response.exception); }}謝謝觀看技術剛剛好的文章,技術剛剛好是個人維護,每天至少更新一篇Flutter技術文章,實時為大家播報Flutter最新消息。如果你剛好也在關注Flutter這門技術,那就跟我一起學習進步吧,你的贊,收藏,轉發是對我個人最大的支持,維護不易,歡迎關注。