語言: 英語 | 中文
基於微信 UI 的 Flutter 專案的相機選擇器,也是 wechat_assets_picker 的一個單獨的可運行擴充。
UI目前基於的微信版本: 8.0.49
。 UI設計將隨著微信更新隨時更新。
請參閱遷移指南,了解如何在重大變更之間進行遷移。
該軟體包僅保證它可以在Flutter 的穩定版本上運行。我們不會即時更新它以與 Flutter 的其他管道保持一致。
2.8.0 | 3.3.0 | 3.16.0 | |
---|---|---|---|
4.2.0+ | ✅ | ||
4.0.0+ | ✅ | ||
3.0.0+ | ✅ |
該軟體包是由這些精彩的軟體包構建的。
姓名 | 特徵 |
---|---|
照片管理器 | 資產的基本抽象與管理。 |
相機 | 捕捉影像和視訊。 |
影片播放器 | 相應地播放視訊和音訊。 |
它們的實現在包中應該是相對穩定的。如果您在使用選擇器時發現任何與之相關的問題,請先將問題提交到我們的問題追蹤器。
State
State
覆蓋來實現ThemeData
完全可自訂的主題![]() | ![]() | ![]() | ![]() | ![]() |
---|
在開始任何操作之前,請注意以下注意事項:
AssetEntity
AssetPathEntity
當您對相關 API 和行為有疑問時,請查看 photo_manager 的 API 文件以取得更多詳細資訊。
範例中詳細介紹了大多數用法。在出現任何問題之前,請仔細閱讀該範例。
如果您在執行flutter pub get
時遇到resolve conflict
錯誤,請使用dependency_overrides
來修復它。
執行flutter pub add wechat_camera_picker
,或手動將wechat_camera_picker
新增至pubspec.yaml
依賴項。
dependencies :
wechat_camera_picker : ^latest_version
最新的穩定版本是:
最新的開發版本是:
運行前請遵循以下詳細的設定指南:
NSPhotoLibraryAddUsageDescription
時,需要使用onEntitySaving
或onXFileCaptured
來處理捕獲的文件,在這種情況下AssetEntity
不可用,使用其 ID 獲取該資源將導致崩潰。然後在程式碼中匯入該包:
import 'package:wechat_camera_picker/wechat_camera_picker.dart' ;
當您選擇資產時,包將獲取Locale?
從您的BuildContext
中,並傳回目前語言的對應文字委託。確保您的小部件樹中有一個可以從BuildContext
存取的有效Locale
。否則,將使用預設的中文代表。
嵌入文字代表語言有:
如果您想使用自訂/固定文字委託,請透過CameraPickerConfig.textDelegate
傳遞它。
final AssetEntity ? entity = await CameraPicker . pickFromCamera (context);
使用CameraPickerConfig
進行更多拾取行為。
final AssetEntity ? entity = await CameraPicker . pickFromCamera (
context,
pickerConfig : const CameraPickerConfig (),
);
CameraPickerConfig
中的欄位:
姓名 | 類型 | 描述 | 預設值 |
---|---|---|---|
啟用錄音 | bool | 拾取器是否可以錄製影片。 | false |
僅啟用錄音 | bool | 選擇器是否只能錄製影片。僅當enableRecording 為true 時可用。 | false |
啟用Tap錄音 | bool | 是否允許單擊開始錄音。僅當enableRecording 為true 時可用。 | false |
啟用音訊 | bool | 是否選擇器是否應錄製音訊。僅適用於錄音。 | true |
啟用設定曝光 | bool | 用戶是否可以透過點擊來設定曝光點。 | true |
啟用曝光控制點 | bool | 使用者是否可以根據設定點調整曝光。 | true |
啟用捏合縮放 | bool | 用戶是否可以透過捏合縮放相機。 | true |
啟用拉動縮放記錄 | bool | 用戶錄製影片時是否可以透過上拉進行縮放。 | true |
啟用縮放預覽 | bool | 拍攝期間是否應縮放相機預覽。 | false |
應該刪除預覽文件 | bool | 彈出預覽檔案時是否刪除。 | false |
應該會自動預覽視頻 | bool | 影片是否應在預覽中立即播放。 | true |
最大錄音持續時間 | Duration? | 錄影過程的最大持續時間。 | const Duration(seconds: 15) |
最小錄音持續時間 | Duration | 錄影過程的最短持續時間。 | const Duration(seconds: 1) |
主題 | ThemeData? | 選擇器的主題資料。 | CameraPicker.themeData(wechatThemeColor) |
文字委託 | CameraPickerTextDelegate? | 控制小部件中文字的文字委託。 | CameraPickerTextDelegate |
解析度預設 | ResolutionPreset | 目前相機的解析度。 | ResolutionPreset.ultraHigh |
相機四分之一轉 | int | 相機視圖應順時針旋轉四分之一圈的數量。 | 0 |
影像格式群組 | ImageFormatGroup | 描述原始影像格式的輸出。 | ImageFormatGroup.unknown |
首選鏡頭方向 | CameraLensDirection | 首次使用相機時首選哪個鏡頭方向。 | CameraLensDirection.back |
鎖定捕獲方向 | DeviceOrientation? | 拍攝期間相機是否應鎖定在特定方向。 | 無效的 |
前台產生器 | ForegroundBuilder? | 前景小工具產生器將覆蓋整個相機預覽。 | 無效的 |
預覽TransformBuilder | PreviewTransformBuilder? | 將改變相機預覽的小部件建構器。 | 無效的 |
實體保存 | EntitySaveCallback? | 定義用於在檢視器中儲存實體的回呼類型。 | 無效的 |
錯誤時 | CameraErrorHandler? | 揀選過程中發生任何錯誤時的錯誤處理程序。 | 無效的 |
onXFileCaptured | XFileCapturedCallback? | 相機捕捉XFile時的回呼類型定義。 | 無效的 |
未滿足最小記錄持續時間 | VoidCallback? | 錄音未達最短錄音時長時的回調。 | 無效的 |
提貨確認時 | void Function(AssetEntity)? | 拍照或影片確認時的回調。 | 無效的 |
權限請求選項 | PermissionRequestOption? | 使用photo_manager 儲存擷取的檔案時的權限請求選項。 | 無效的 |
State
所有使用者介面都可以透過自訂State
進行自訂,包括:
CameraPickerState
CameraPickerViewerState
重寫State
後,將它們傳遞給 pick 方法,更具體地說:
CameraPicker.pickFromCamera(createPickerState: () => CustomCameraPickerState());
CameraPickerViewer.pushToViewer(..., createViewerState: () => CustomCameraPickerViewerState());
目前,預覽在 iOS 上無法正確同步。您可以在本期中找到更多詳細資訊:flutter/flutter#89216。除此之外,請提交問題來描述您的問題。
感謝這些優秀的人(表情符號鍵):
亞歷克斯李 ? ? ? ? | 彩晶龍 ? | 萊爾 | MJL0602 ? | 別名王 ? | 左編碼 ? | 梁世榮 |
洛魔專業版 ️️️️♿️? | 朱利納多 | 阮福來 ? | 阿莫斯 ? | 鄭裕俊 |
該項目遵循所有貢獻者規範。歡迎任何形式的貢獻!