Langue : Anglais | Chine
Un sélecteur de caméra pour les projets Flutter basé sur l'interface utilisateur de WeChat, qui est également une extension exécutable distincte de wechat_assets_picker.
La version actuelle de WeChat sur laquelle l'interface utilisateur est basée : 8.0.49
. Les conceptions de l'interface utilisateur seront mises à jour à tout moment après la mise à jour de WeChat.
Consultez le Guide de migration pour savoir comment migrer entre des modifications avec rupture.
Le package garantit uniquement qu'il fonctionnera sur la version stable de Flutter . Nous ne le mettrons pas à jour en temps réel pour nous aligner sur les autres canaux de Flutter.
2.8.0 | 3.3.0 | 3.16.0 | |
---|---|---|---|
4.2.0+ | ✅ | ||
4.0.0+ | ✅ | ||
3.0.0+ | ✅ |
Le package est construit à partir de ces merveilleux packages.
Nom | Caractéristiques |
---|---|
gestionnaire_photo | Les abstractions de base et la gestion des actifs. |
caméra | Capture des images et des vidéos. |
lecteur_vidéo | Lit les vidéos et les audios en conséquence. |
Leur implémentation devrait être relativement stable dans le package. Si vous avez rencontré des problèmes liés à ces problèmes lors de l'utilisation du sélecteur, soumettez d'abord les problèmes à notre outil de suivi des problèmes.
State
personnalisésState
ThemeData
Soyez conscient des avis ci-dessous avant de commencer quoi que ce soit :
AssetEntity
AssetPathEntity
Lorsque vous avez des questions sur les API et les comportements associés, consultez la documentation API de photo_manager pour plus de détails.
La plupart des utilisations sont détaillées et couvertes par l'exemple. Veuillez parcourir attentivement l’exemple avant d’avoir des questions.
Si vous obtenez une erreur resolve conflict
lors de l'exécution flutter pub get
, veuillez utiliser dependency_overrides
pour la corriger.
Exécutez flutter pub add wechat_camera_picker
ou ajoutez manuellement wechat_camera_picker
aux dépendances pubspec.yaml
.
dependencies :
wechat_camera_picker : ^latest_version
La dernière version stable est :
La dernière version de développement est :
Suivez ce guide de configuration détaillé avant les exécutions :
NSPhotoLibraryAddUsageDescription
sur iOS, cela nécessite l'utilisation onEntitySaving
ou onXFileCaptured
pour gérer le fichier capturé, un AssetEntity
n'est pas disponible dans ce cas, l'obtention de cet actif avec son ID entraînera un crash.Importez ensuite le package dans votre code :
import 'package:wechat_camera_picker/wechat_camera_picker.dart' ;
Lorsque vous sélectionnez des ressources, le package obtiendra le Locale?
à partir de votre BuildContext
et renvoie le délégué de texte correspondant de la langue actuelle. Assurez-vous que vous disposez d'un Locale
valide dans votre arborescence de widgets, accessible à partir du BuildContext
. Sinon, le délégué chinois par défaut sera utilisé.
Les langues des délégués de texte intégrés sont :
Si vous souhaitez utiliser un délégué de texte personnalisé/fixe, transmettez-le via CameraPickerConfig.textDelegate
.
final AssetEntity ? entity = await CameraPicker . pickFromCamera (context);
Utilisez CameraPickerConfig
pour plus de comportements de sélection.
final AssetEntity ? entity = await CameraPicker . pickFromCamera (
context,
pickerConfig : const CameraPickerConfig (),
);
Champs dans CameraPickerConfig
:
Nom | Taper | Description | Valeur par défaut |
---|---|---|---|
activer l'enregistrement | bool | Si le sélecteur peut enregistrer une vidéo. | false |
onlyEnableRecording | bool | Indique si le sélecteur peut uniquement enregistrer des vidéos. Disponible uniquement lorsque enableRecording est true . | false |
activerTapRecording | bool | Si vous autorisez l'enregistrement, vous pouvez démarrer en un seul clic. Disponible uniquement lorsque enableRecording est true . | false |
activerAudio | bool | Indique si le sélecteur doit enregistrer l'audio. Uniquement disponible avec enregistrement. | true |
activerSetExposure | bool | Indique si les utilisateurs peuvent définir le point d'exposition en appuyant sur. | true |
activerExposureControlOnPoint | bool | Indique si les utilisateurs peuvent ajuster l'exposition en fonction du point de consigne. | true |
activerPinchToZoom | bool | Indique si les utilisateurs peuvent zoomer sur la caméra par pincement. | true |
activerPullToZoomInRecord | bool | Indique si les utilisateurs peuvent zoomer en tirant vers le haut lors de l'enregistrement d'une vidéo. | true |
activerScaledPreview | bool | Indique si l'aperçu de la caméra doit être mis à l'échelle pendant les captures. | false |
devraitDeletePreviewFile | bool | Si le fichier d'aperçu sera supprimé lors de sa pop. | false |
devraitAutoPreviewVideo | bool | Indique si la vidéo doit être lue instantanément dans l'aperçu. | true |
maximumRecordingDuration | Duration? | La durée maximale du processus d'enregistrement vidéo. | const Duration(seconds: 15) |
durée d'enregistrement minimale | Duration | La durée minimale du processus d'enregistrement vidéo. | const Duration(seconds: 1) |
thème | ThemeData? | Données de thème pour le sélecteur. | CameraPicker.themeData(wechatThemeColor) |
texteDélégué | CameraPickerTextDelegate? | Délégué de texte qui contrôle le texte dans les widgets. | CameraPickerTextDelegate |
résolutionPreset | ResolutionPreset | Résolution actuelle pour la caméra. | ResolutionPreset.ultraHigh |
caméraQuart de tour | int | Nombre de quarts de tour dans le sens des aiguilles d'une montre pendant lesquels la vue de la caméra doit être tournée. | 0 |
groupeFormatimage | ImageFormatGroup | Décrit la sortie du format d'image brute. | ImageFormatGroup.unknown |
PreferredLensDirection | CameraLensDirection | Quelle direction de l'objectif est préférable lors de la première utilisation de l'appareil photo. | CameraLensDirection.back |
lockCaptureOrientation | DeviceOrientation? | Si la caméra doit être verrouillée sur une orientation spécifique pendant les captures. | nul |
premier planBuilder | ForegroundBuilder? | Le générateur de widgets de premier plan qui couvrira l'intégralité de l'aperçu de la caméra. | nul |
aperçuTransformBuilder | PreviewTransformBuilder? | Le constructeur de widgets qui transformera l'aperçu de la caméra. | nul |
onEntitySaving | EntitySaveCallback? | Le type de rappel défini pour enregistrer l’entité dans la visionneuse. | nul |
surErreur | CameraErrorHandler? | Le gestionnaire d’erreurs lorsqu’une erreur s’est produite pendant le processus de sélection. | nul |
onXFileCaptured | XFileCapturedCallback? | La définition du type de rappel lorsque le XFile est capturé par la caméra. | nul |
onMinimumRecordDurationNotMet | VoidCallback? | Le rappel lorsque l'enregistrement n'atteint pas la durée minimale d'enregistrement. | nul |
onPickConfirmé | void Function(AssetEntity)? | Le rappel lorsque la photo est prise ou la vidéo est confirmée. | nul |
autorisationRequestOption | PermissionRequestOption? | L'option de demande d'autorisation lors de l'enregistrement du fichier capturé à l'aide du package photo_manager . | nul |
State
personnalisés Toutes les interfaces utilisateur peuvent être personnalisées via State
personnalisés, notamment :
CameraPickerState
CameraPickerViewerState
Après avoir remplacé les State
, passez-les par la méthode de sélection, plus précisément :
CameraPicker.pickFromCamera(createPickerState: () => CustomCameraPickerState());
CameraPickerViewer.pushToViewer(..., createViewerState: () => CustomCameraPickerViewerState());
Actuellement, l’aperçu n’est pas correctement synchronisé sur iOS. Vous pouvez trouver plus de détails dans ce numéro : flutter/flutter#89216 . En dehors de cela, veuillez soumettre des problèmes pour décrire votre question.
Merci à ces personnes merveilleuses (clé emoji) :
Alex Li ? ? ? ? | Caijinglong ? | Lael | mjl0602 ? | AliasWang ? | codage à gauche ? | Luong Le Vinh |
luomo-pro ️️️️♿️ ? | LeonardoZhu | Nguyen Phuc Loi ? | Amos ? | Tee Yu Juin |
Ce projet suit la spécification de tous les contributeurs. Les contributions de toute nature sont les bienvenues !