2023年4月17日 星期一

Flutter學習-image_picker組件

官方庫下載連結

https://pub.dev/packages/image_picker


目的:在Flutter中,image_picker套件可以讓使用者在應用程式中從不同來源選擇圖像,例如相機或圖庫。它提供了一個方便的API,可以幫助開發人員輕鬆地獲取所需的圖像並將其集成到應用程式中。使用image_picker,您可以讓用戶在應用程式中添加個性化的圖像,這有助於提高應用程式的用戶體驗。


在使用前需給予手機使用本地端圖片的權限

ISO系統:

將以下鍵添加到您的Info.plist文件中,該文件位於<project root>/ios/Runner/Info.plist

  • NSPhotoLibraryUsageDescription- 描述為什麼您的應用需要照片庫的許可。這在可視化編輯器中 稱為隱私 - 照片庫使用說明。
    • false如果您始終傳遞for則不會請求此權限requestFullMetadata,但 App Store 政策要求包含 plist 條目。
  • NSCameraUsageDescription- 描述為什麼您的應用需要訪問相機。這在可視化編輯器中稱為Privacy - Camera Usage Description 。
  • NSMicrophoneUsageDescription- 如果您打算錄製視頻,請描述為什麼您的應用需要訪問麥克風。這在可視化編輯器中稱為Privacy - Microphone Usage Description 。

安卓系統

從版本0.8.1開始,Android 實現支持在 Android 4.3 或更高版本上選擇(多個)圖像。

無需配置 - 插件應該開箱即用。然而,強烈建議為 Android 在內存不足時殺死應用程序做好準備。在Android 上處理 MainActivity 銷毀部分討論瞭如何為此做準備 。

不再需要將其android:requestLegacyExternalStorage="true"作為屬性添加到<application>AndroidManifest.xml 中的標記,因為image_picker已更新為使用範圍存儲。

注意:使用相機拾取的圖像和視頻會保存到應用程序的本地緩存中,因此預計只會暫時存在。如果您需要永久存儲您選擇的圖像,您有責任將其移動到更永久的位置。

如要更改,檔案位置位於app/src/main/AndroidManifest.xml


<manifest> <application> ... </application> // 寫入文件權限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> // 讀取文件權限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> // 使用相機檔限 <uses-permission android:name="android.permission.CAMERA" /> </manifest>


使用的方法

(一)初始化
//初始化一個imagePicker選擇器,以便進行後續的選擇工作
final ImagePicker picker = ImagePicker();

(二)選擇一張照片
(2-1) picker.pickImage()

如果要從相簿選擇一張照片,並存在一個變數中,如下:

final XFile? image = await picker.pickImage(source: ImageSource.gallery); 

(2-2)picker.pickImage()
如果要從相機選擇一張照片,並存在一個變數中,如下:

final XFile? photo = await picker.pickImage(source: ImageSource.camera); 


(二)選擇多張照片(picker.pickMultiImage)

final List<XFile> images = await picker.pickMultiImage();


(三)選擇一段影片
(3-1)從相簿取得(source: ImageSource.gallery)
final XFile? galleryVideo = await picker.pickVideo(source: ImageSource.gallery); 

(3-2)從相機取得(source: ImageSource.camera)

 final XFile? cameraVideo = await picker.pickVideo(source: ImageSource.camera); 


教學網頁

https://www.cnblogs.com/ilgnefz/p/15954507.html

教學影片

https://www.youtube.com/watch?v=IePaAGXzmtU

iso權限說明

https://www.jianshu.com/p/d5f70743fee1


沒有留言:

張貼留言