言語: 英語 | 中国語
WeChat の UI に基づく Flutter プロジェクト用のカメラ ピッカー。これは、wechat_assets_picker に対する別個の実行可能な拡張機能でもあります。
UI が基づいている現在の WeChat バージョン: 8.0.49
。 UI デザインは WeChat アップデート後に随時更新されます。
重大な変更間の移行方法については、移行ガイドを参照してください。
このパッケージは、 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 |
タップ録音を有効にする | bool | シングルタップで記録を開始できるようにするかどうか。 enableRecording がtrue 場合にのみ使用できます。 | false |
オーディオを有効にする | bool | ピッカーがオーディオを録音するかどうか。録音時のみ利用可能。 | true |
露出設定を有効にする | bool | ユーザーがタップして露出ポイントを設定できるかどうか。 | true |
EnableExposureControlOnPoint | bool | ユーザーが設定ポイントに従って露出を調整できるかどうか。 | true |
ピンチトゥズームを有効にする | bool | ユーザーがピンチでカメラをズームできるかどうか。 | true |
プルトゥズームインレコードを有効にする | bool | ビデオの録画時にユーザーが引き上げることでズームできるかどうか。 | true |
スケールドプレビューを有効にする | bool | キャプチャ中にカメラのプレビューを拡大縮小するかどうか。 | false |
shouldDeletePreviewFile | bool | ポップ時にプレビューファイルを削除するかどうか。 | false |
shouldAutoPreviewビデオ | bool | ビデオをプレビューで即座に再生するかどうか。 | true |
最大録音期間 | Duration? | ビデオ録画プロセスの最大継続時間。 | const Duration(seconds: 15) |
最小録音期間 | Duration | ビデオ録画プロセスの最小期間。 | const Duration(seconds: 1) |
テーマ | ThemeData? | ピッカーのテーマ データ。 | CameraPicker.themeData(wechatThemeColor) |
テキストデリゲート | CameraPickerTextDelegate? | ウィジェット内のテキストを制御するテキスト デリゲート。 | CameraPickerTextDelegate |
解像度プリセット | ResolutionPreset | カメラの現在の解像度。 | ResolutionPreset.ultraHigh |
カメラクォーターターン | int | カメラビューを時計回りに 4 分の 1 回転させる数。 | 0 |
画像フォーマットグループ | ImageFormatGroup | Raw 画像形式の出力について説明します。 | ImageFormatGroup.unknown |
推奨レンズ方向 | CameraLensDirection | 初めてカメラを使用するときにどのレンズの方向が好ましいか。 | CameraLensDirection.back |
ロックキャプチャ方向 | DeviceOrientation? | キャプチャ中にカメラを特定の方向にロックするかどうか。 | ヌル |
フォアグラウンドビルダー | ForegroundBuilder? | カメラのプレビュー全体をカバーする前景ウィジェット ビルダー。 | ヌル |
プレビュー変換ビルダー | PreviewTransformBuilder? | カメラのプレビューを変換するウィジェット ビルダー。 | ヌル |
onEntitySaving | EntitySaveCallback? | ビューアにエンティティを保存するためのコールバック タイプを定義します。 | ヌル |
onError | CameraErrorHandler? | ピッキング プロセス中にエラーが発生した場合のエラー ハンドラー。 | ヌル |
onXFileCaptured | XFileCapturedCallback? | XFile がカメラでキャプチャされたときのコールバック タイプの定義。 | ヌル |
onMinimumRecordDurationが満たされていません | VoidCallback? | 録音が最小録音時間を満たしていない場合のコールバック。 | ヌル |
onPick確認済み | 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 ? | エイリアスワン ? | 左コーディング ? | ルオン ザ ヴィン |
ルオモプロ ️️️️♿️ ? | レオナルドズー | グエン・フック・ローイ ? | アモス ? | ティー・ユ・ジューン |
このプロジェクトは、全員参加者の仕様に従っています。あらゆる種類の貢献を歓迎します。