Idioma: Inglés | 中文
Un selector de cámara para proyectos de Flutter basado en la interfaz de usuario de WeChat, que también es una extensión ejecutable independiente de wechat_assets_picker.
La versión actual de WeChat en la que se basa la interfaz de usuario: 8.0.49
. Los diseños de la interfaz de usuario se actualizarán en cualquier momento después de la actualización de WeChat.
Consulte la Guía de migración para aprender cómo migrar entre cambios importantes.
El paquete solo garantiza que funcionará en la versión estable de Flutter . No lo actualizaremos en tiempo real para alinearlo con otros canales de Flutter.
2.8.0 | 3.3.0 | 3.16.0 | |
---|---|---|---|
4.2.0+ | ✅ | ||
4.0.0+ | ✅ | ||
3.0.0+ | ✅ |
El paquete se construye a partir de estos maravillosos paquetes.
Nombre | Características |
---|---|
administrador de fotos | Las abstracciones básicas y la gestión de activos. |
cámara | Captura imágenes y vídeos. |
reproductor de video | Reproduce vídeos y audios correspondientemente. |
Su implementación debería ser relativamente estable en el paquete. Si encontró algún problema relacionado con ellos al utilizar el selector, envíe los problemas a nuestro rastreador de problemas primero.
State
personalizadosState
ThemeData
Tenga en cuenta los siguientes avisos antes de comenzar cualquier cosa:
AssetEntity
AssetPathEntity
Cuando tenga preguntas sobre comportamientos y API relacionados, consulte los documentos de API de photo_manager para obtener más detalles.
La mayoría de los usos se detallan y cubren en el ejemplo. Lea el ejemplo detenidamente antes de tener alguna pregunta.
Si obtuvo un error resolve conflict
al ejecutar flutter pub get
, utilice dependency_overrides
para solucionarlo.
Ejecute flutter pub add wechat_camera_picker
o agregue wechat_camera_picker
a las dependencias pubspec.yaml
manualmente.
dependencies :
wechat_camera_picker : ^latest_version
La última versión estable es:
La última versión de desarrollo es:
Siga esta guía de configuración detallada antes de ejecutar:
NSPhotoLibraryAddUsageDescription
en iOS, se requiere el uso de onEntitySaving
o onXFileCaptured
para manejar el archivo capturado; una AssetEntity
no está disponible en esta circunstancia; obtener ese activo con su ID provocará un bloqueo.Luego importe el paquete en su código:
import 'package:wechat_camera_picker/wechat_camera_picker.dart' ;
Cuando seleccione activos, ¿el paquete obtendrá la Locale?
desde su BuildContext
y devolver el delegado de texto correspondiente del idioma actual. Asegúrese de tener una Locale
válida en su árbol de widgets a la que se pueda acceder desde BuildContext
. De lo contrario, se utilizará el delegado chino predeterminado.
Los idiomas de los delegados de texto incrustados son:
Si desea utilizar un delegado de texto personalizado/fijo, páselo a través de CameraPickerConfig.textDelegate
.
final AssetEntity ? entity = await CameraPicker . pickFromCamera (context);
Utilice CameraPickerConfig
para conocer más comportamientos de selección.
final AssetEntity ? entity = await CameraPicker . pickFromCamera (
context,
pickerConfig : const CameraPickerConfig (),
);
Campos en CameraPickerConfig
:
Nombre | Tipo | Descripción | Valor predeterminado |
---|---|---|---|
habilitar grabación | bool | Si el selector puede grabar vídeo. | false |
sóloHabilitarGrabación | bool | Si el selector solo puede grabar vídeo. Solo está disponible cuando enableRecording es true . | false |
habilitarTapRecording | bool | Si permitir que el registro pueda comenzar con un solo toque. Solo está disponible cuando enableRecording es true . | false |
habilitar audio | bool | Si el selector debe grabar audio. Sólo disponible con grabación. | true |
habilitarSetExposure | bool | Si los usuarios pueden establecer el punto de exposición tocando. | true |
habilitarExposureControlOnPoint | bool | Si los usuarios pueden ajustar la exposición según el punto de ajuste. | true |
habilitarPinchToZoom | bool | Si los usuarios pueden hacer zoom con la cámara pellizcando. | true |
habilitarPullToZoomInRecord | bool | Si los usuarios pueden hacer zoom tirando hacia arriba al grabar video. | true |
enableScaledPreview | bool | Si la vista previa de la cámara debe ampliarse durante las capturas. | false |
debería eliminar el archivo de vista previa | bool | Si el archivo de vista previa se eliminará cuando aparezca. | false |
deberíaAutoPreviewVideo | bool | Si el vídeo debe reproducirse instantáneamente en la vista previa. | true |
duración máxima de grabación | Duration? | La duración máxima del proceso de grabación de vídeo. | const Duration(seconds: 15) |
Duración mínima de la grabación | Duration | La duración mínima del proceso de grabación de vídeo. | const Duration(seconds: 1) |
tema | ThemeData? | Datos del tema para el selector. | CameraPicker.themeData(wechatThemeColor) |
textoDelegar | CameraPickerTextDelegate? | Delegado de texto que controla el texto en los widgets. | CameraPickerTextDelegate |
resoluciónPreestablecida | ResolutionPreset | Resolución actual de la cámara. | ResolutionPreset.ultraHigh |
cámaraCuartoVueltas | int | Se debe girar la vista de la cámara el número de cuartos de vuelta en el sentido de las agujas del reloj. | 0 |
grupo de formato de imagen | ImageFormatGroup | Describe la salida del formato de imagen sin formato. | ImageFormatGroup.unknown |
dirección de lente preferida | CameraLensDirection | Qué dirección de lente se prefiere cuando se usa la cámara por primera vez. | CameraLensDirection.back |
bloquearCapturaOrientación | DeviceOrientation? | Si la cámara debe bloquearse en una orientación específica durante las capturas. | nulo |
primer planoConstructor | ForegroundBuilder? | El generador de widgets de primer plano que cubrirá toda la vista previa de la cámara. | nulo |
vista previaTransformBuilder | PreviewTransformBuilder? | El creador de widgets que transformará la vista previa de la cámara. | nulo |
onEntitySaving | EntitySaveCallback? | El tipo de devolución de llamada se define para guardar la entidad en el visor. | nulo |
enError | CameraErrorHandler? | El manejador de errores cuando ocurrió algún error durante el proceso de recolección. | nulo |
onXFileCaptured | XFileCapturedCallback? | La definición del tipo de devolución de llamada cuando la cámara captura el XFile. | nulo |
onMinimumRecordDurationNotMet | VoidCallback? | La devolución de llamada cuando la grabación no cumple con la duración mínima de grabación. | nulo |
onPickConfirmado | void Function(AssetEntity)? | La devolución de llamada cuando se toma una fotografía o se confirma el video. | nulo |
opción de solicitud de permiso | PermissionRequestOption? | La opción de solicitud de permiso al guardar el archivo capturado usando el paquete photo_manager . | nulo |
State
personalizados Todas las interfaces de usuario se pueden personalizar a través de State
personalizados, incluyendo:
CameraPickerState
CameraPickerViewerState
Después de anular los State
, páselos por el método de selección, más específicamente:
CameraPicker.pickFromCamera(createPickerState: () => CustomCameraPickerState());
CameraPickerViewer.pushToViewer(..., createViewerState: () => CustomCameraPickerViewerState());
Actualmente, la vista previa no está sincronizada correctamente en iOS. Puede encontrar más detalles en este número: flutter/flutter#89216. Aparte de eso, envíe problemas para describir su pregunta.
Gracias a estas maravillosas personas (tecla emoji):
Alex Li ? ? ? ? | caijinglong ? | lael | mjl0602 ? | AliasWang ? | codificación izquierda ? | Luong El Vinh |
luomo-pro ️️️️♿️ ? | LeonardoZhu | Nguyen Phuc Loi ? | Amós ? | Tee Yu Junio |
Este proyecto sigue la especificación de todos los contribuyentes. ¡Las contribuciones de cualquier tipo son bienvenidas!