Sprache: Englisch | 中文
Ein Kamera-Picker für Flutter-Projekte basierend auf der WeChat-Benutzeroberfläche, der auch eine separate ausführbare Erweiterung des wechat_assets_picker ist.
Die aktuelle WeChat-Version, auf der die Benutzeroberfläche basiert: 8.0.49
. UI-Designs werden nach dem WeChat-Update jederzeit aktualisiert.
Im Migrationsleitfaden erfahren Sie, wie Sie zwischen Breaking Changes migrieren.
Das Paket garantiert nur, dass es auf der stabilen Version von Flutter funktioniert. Wir werden es nicht in Echtzeit aktualisieren, um es an andere Kanäle von Flutter anzupassen.
2.8.0 | 3.3.0 | 3.16.0 | |
---|---|---|---|
4.2.0+ | ✅ | ||
4.0.0+ | ✅ | ||
3.0.0+ | ✅ |
Das Paket besteht aus diesen wunderbaren Paketen.
Name | Merkmale |
---|---|
foto_manager | Die grundlegenden Abstraktionen und Verwaltung für Vermögenswerte. |
Kamera | Erfasst Bilder und Videos. |
video_player | Spielt Videos und Audios entsprechend ab. |
Ihre Implementierung sollte im Paket relativ stabil sein. Wenn Sie bei der Verwendung der Auswahl diesbezügliche Probleme gefunden haben, senden Sie diese zunächst an unseren Issue-Tracker.
State
sState
s OverrideThemeData
![]() | ![]() | ![]() | ![]() | ![]() |
---|
Beachten Sie die folgenden Hinweise, bevor Sie etwas unternehmen:
AssetEntity
AssetPathEntity
Wenn Sie Fragen zu verwandten APIs und Verhaltensweisen haben, lesen Sie die API-Dokumente von photo_manager für weitere Details.
Die meisten Verwendungen werden im Beispiel detailliert beschrieben und abgedeckt. Bitte gehen Sie das Beispiel sorgfältig durch, bevor Sie Fragen haben.
Wenn beim Ausführen von flutter pub get
ein resolve conflict
auftritt, verwenden Sie bitte dependency_overrides
um ihn zu beheben.
Führen Sie flutter pub add wechat_camera_picker
aus oder fügen Sie wechat_camera_picker
manuell zu pubspec.yaml
Abhängigkeiten hinzu.
dependencies :
wechat_camera_picker : ^latest_version
Die neueste stabile Version ist:
Die neueste Entwicklerversion ist:
Befolgen Sie vor dem Start diese detaillierte Einrichtungsanleitung:
NSPhotoLibraryAddUsageDescription
unter iOS verwenden, müssen Sie onEntitySaving
oder onXFileCaptured
verwenden, um die erfasste Datei zu verarbeiten. Eine AssetEntity
ist in diesem Fall nicht verfügbar. Das Abrufen dieses Assets mit seiner ID führt zu einem Absturz.Importieren Sie dann das Paket in Ihren Code:
import 'package:wechat_camera_picker/wechat_camera_picker.dart' ;
Wenn Sie Assets auswählen, erhält das Paket das Locale?
aus Ihrem BuildContext
und geben Sie den entsprechenden Textdelegaten der aktuellen Sprache zurück. Stellen Sie sicher, dass Ihr Widget-Baum über ein gültiges Locale
verfügt, auf das über BuildContext
zugegriffen werden kann. Andernfalls wird der standardmäßige chinesische Delegat verwendet.
Die Sprachen der eingebetteten Textdelegaten sind:
Wenn Sie einen benutzerdefinierten/festen Textdelegaten verwenden möchten, übergeben Sie ihn über CameraPickerConfig.textDelegate
.
final AssetEntity ? entity = await CameraPicker . pickFromCamera (context);
Verwenden Sie CameraPickerConfig
für mehr Auswahlverhalten.
final AssetEntity ? entity = await CameraPicker . pickFromCamera (
context,
pickerConfig : const CameraPickerConfig (),
);
Felder in CameraPickerConfig
:
Name | Typ | Beschreibung | Standardwert |
---|---|---|---|
Aufnahme aktivieren | bool | Ob der Kommissionierer Videos aufnehmen kann. | false |
onlyEnableRecording | bool | Ob der Picker nur Videos aufnehmen kann. Nur verfügbar, wenn enableRecording true ist. | false |
enableTapRecording | bool | Legt fest, ob die Aufnahme mit einem einzigen Tastendruck gestartet werden kann. Nur verfügbar, wenn enableRecording true ist. | false |
enableAudio | bool | Ob Ob der Picker Audio aufnehmen soll. Nur mit Aufnahme verfügbar. | true |
enableSetExposure | bool | Ob Benutzer den Belichtungspunkt durch Antippen festlegen können. | true |
enableExposureControlOnPoint | bool | Ob Benutzer die Belichtung entsprechend dem Sollwert anpassen können. | true |
enablePinchToZoom | bool | Ob Benutzer die Kamera per Pinch zoomen können. | true |
enablePullToZoomInRecord | bool | Ob Benutzer beim Aufzeichnen von Videos durch Hochziehen zoomen können. | true |
enableScaledPreview | bool | Ob die Kameravorschau während der Aufnahme skaliert werden soll. | false |
ShouldDeletePreviewFile | bool | Ob die Vorschaudatei beim Öffnen gelöscht wird. | false |
ShouldAutoPreviewVideo | bool | Ob das Video sofort in der Vorschau abgespielt werden soll. | true |
maximale Aufnahmedauer | Duration? | Die maximale Dauer des Videoaufnahmevorgangs. | const Duration(seconds: 15) |
minimale Aufnahmedauer | Duration | Die Mindestdauer des Videoaufzeichnungsprozesses. | const Duration(seconds: 1) |
Thema | ThemeData? | Themendaten für den Picker. | CameraPicker.themeData(wechatThemeColor) |
textDelegate | CameraPickerTextDelegate? | Textdelegierter, der Text in Widgets steuert. | CameraPickerTextDelegate |
AuflösungPreset | ResolutionPreset | Aktuelle Auflösung der Kamera. | ResolutionPreset.ultraHigh |
KameraVierteldrehungen | int | Die Anzahl der Vierteldrehungen im Uhrzeigersinn, um die die Kameraansicht gedreht werden soll. | 0 |
imageFormatGroup | ImageFormatGroup | Beschreibt die Ausgabe des Rohbildformats. | ImageFormatGroup.unknown |
bevorzugteLensDirection | CameraLensDirection | Welche Objektivrichtung wird bei der ersten Verwendung der Kamera bevorzugt? | CameraLensDirection.back |
lockCaptureOrientation | DeviceOrientation? | Ob die Kamera während der Aufnahme auf eine bestimmte Ausrichtung fixiert werden soll. | null |
VordergrundBuilder | ForegroundBuilder? | Der Vordergrund-Widget-Builder, der die gesamte Kameravorschau abdeckt. | null |
VorschauTransformBuilder | PreviewTransformBuilder? | Der Widget-Builder, der die Kameravorschau umwandelt. | null |
onEntitySaving | EntitySaveCallback? | Der Rückruftyp, der zum Speichern der Entität im Viewer definiert wird. | null |
onError | CameraErrorHandler? | Der Fehlerbehandler, wenn während des Kommissioniervorgangs ein Fehler aufgetreten ist. | null |
onXFileCaptured | XFileCapturedCallback? | Die Definition des Rückruftyps, wenn die XFile von der Kamera erfasst wird. | null |
onMinimumRecordDurationNotMet | VoidCallback? | Der Rückruf erfolgt, wenn die Aufzeichnung die Mindestaufzeichnungsdauer nicht erreicht. | null |
onPickConfirmed | void Function(AssetEntity)? | Der Rückruf bei der Aufnahme eines Bildes oder Videos wird bestätigt. | null |
PermissionRequestOption | PermissionRequestOption? | Die Berechtigungsanforderungsoption beim Speichern der erfassten Datei mit dem photo_manager -Paket. | null |
State
s Alle Benutzeroberflächen können über benutzerdefinierte State
s angepasst werden, einschließlich:
CameraPickerState
CameraPickerViewerState
Führen Sie nach dem Überschreiben von State
s die Auswahlmethode durch, genauer gesagt:
CameraPicker.pickFromCamera(createPickerState: () => CustomCameraPickerState());
CameraPickerViewer.pushToViewer(..., createViewerState: () => CustomCameraPickerViewerState());
Derzeit wird die Vorschau auf iOS nicht korrekt synchronisiert. Weitere Details finden Sie in dieser Ausgabe: flutter/flutter#89216 . Ansonsten reichen Sie bitte Probleme ein, um Ihre Frage zu beschreiben.
Der Dank geht an diese wunderbaren Menschen (Emoji-Taste):
Alex Li ? ? ? ? | Caijinglong ? | Lael | mjl0602 ? | AliasWang ? | Linkscodierung ? | Luong The Vinh |
luomo-pro ️️️️♿️ ? | LeonardoZhu | Nguyen Phuc Loi ? | Amos ? | Tee Yu June |
Dieses Projekt folgt der All-Contributors-Spezifikation. Beiträge jeglicher Art sind willkommen!