Idioma: Inglês | 中文
Um seletor de câmera para projetos Flutter baseado na IU do WeChat, que também é uma extensão executável separada para o wechat_assets_picker.
A versão atual do WeChat na qual a IU se baseia: 8.0.49
. Os designs da UI serão atualizados a qualquer momento após a atualização do WeChat.
Consulte o Guia de migração para saber como migrar entre alterações significativas.
O pacote apenas garante que funcionará na versão estável do Flutter . Não o atualizaremos em tempo real para se alinhar com outros canais do Flutter.
2.8.0 | 3.3.0 | 3.16.0 | |
---|---|---|---|
4.2.0+ | ✅ | ||
4.0.0+ | ✅ | ||
3.0.0+ | ✅ |
O pacote é construído a partir desses pacotes maravilhosos.
Nome | Características |
---|---|
gerenciador de fotos | As abstrações básicas e gerenciamento de ativos. |
câmera | Captura imagens e vídeos. |
video_player | Reproduz vídeos e áudios correspondentemente. |
A sua implementação deverá ser relativamente estável no pacote. Se você encontrou algum problema relacionado a eles ao usar o seletor, primeiro envie os problemas para nosso rastreador de problemas.
State
s personalizadosState
ThemeData
![]() | ![]() | ![]() | ![]() | ![]() |
---|
Esteja ciente dos avisos abaixo antes de começar qualquer coisa:
AssetEntity
AssetPathEntity
Quando você tiver dúvidas sobre APIs e comportamentos relacionados, verifique a documentação da API do photo_manager para obter mais detalhes.
A maioria dos usos é detalhada e abordada no exemplo. Por favor, analise o exemplo com atenção antes de ter qualquer dúvida.
Se você recebeu um erro resolve conflict
ao executar flutter pub get
, use dependency_overrides
para corrigi-lo.
Execute flutter pub add wechat_camera_picker
ou adicione wechat_camera_picker
às dependências pubspec.yaml
manualmente.
dependencies :
wechat_camera_picker : ^latest_version
A última versão estável é:
A versão de desenvolvimento mais recente é:
Siga este guia de configuração detalhado antes das execuções:
NSPhotoLibraryAddUsageDescription
no iOS, é necessário usar onEntitySaving
ou onXFileCaptured
para lidar com o arquivo capturado. Um AssetEntity
não está disponível nesta circunstância, obter esse ativo com seu ID causará uma falha.Em seguida, importe o pacote em seu código:
import 'package:wechat_camera_picker/wechat_camera_picker.dart' ;
Ao escolher ativos, o pacote obterá o Locale?
do seu BuildContext
e retorne o delegado de texto correspondente do idioma atual. Certifique-se de ter um Locale
válido em sua árvore de widgets que possa ser acessado em BuildContext
. Caso contrário, será utilizado o delegado chinês padrão.
Os idiomas dos delegados de texto incorporados são:
Se você quiser usar um delegado de texto personalizado/fixo, passe-o por CameraPickerConfig.textDelegate
.
final AssetEntity ? entity = await CameraPicker . pickFromCamera (context);
Use CameraPickerConfig
para mais comportamentos de seleção.
final AssetEntity ? entity = await CameraPicker . pickFromCamera (
context,
pickerConfig : const CameraPickerConfig (),
);
Campos em CameraPickerConfig
:
Nome | Tipo | Descrição | Valor padrão |
---|---|---|---|
habilitargravação | bool | Se o selecionador pode gravar vídeo. | false |
somenteEnableRecording | bool | Se o selecionador só pode gravar vídeo. Disponível apenas quando enableRecording for true . | false |
ativarTapRecording | bool | Se permitir, o registro pode começar com um único toque. Disponível apenas quando enableRecording for true . | false |
ativarÁudio | bool | Se o selecionador deve gravar áudio. Disponível apenas com gravação. | true |
enableSetExposure | bool | Se os usuários podem definir o ponto de exposição tocando. | true |
ativarExposureControlOnPoint | bool | Se os usuários podem ajustar a exposição de acordo com o ponto definido. | true |
ativarPinchToZoom | bool | Se os usuários podem ampliar a câmera apertando. | true |
ativarPullToZoomInRecord | bool | Se os usuários podem aumentar o zoom puxando para cima ao gravar vídeo. | true |
ativarScaledPreview | bool | Se a visualização da câmera deve ser dimensionada durante as capturas. | false |
deveriaDeletePreviewFile | bool | Se o arquivo de visualização será excluído quando pop. | false |
deveriaAutoPreviewVideo | bool | Se o vídeo deve ser reproduzido instantaneamente na visualização. | true |
duração máxima da gravação | Duration? | A duração máxima do processo de gravação de vídeo. | const Duration(seconds: 15) |
duração mínima da gravação | Duration | A duração mínima do processo de gravação de vídeo. | const Duration(seconds: 1) |
tema | ThemeData? | Dados do tema para o seletor. | CameraPicker.themeData(wechatThemeColor) |
textoDelegado | CameraPickerTextDelegate? | Delegado de texto que controla o texto em widgets. | CameraPickerTextDelegate |
resoluçãoPreset | ResolutionPreset | Resolução atual para a câmera. | ResolutionPreset.ultraHigh |
câmeraQuarterTurns | int | O número de quartos de volta no sentido horário em que a visualização da câmera deve ser girada. | 0 |
imageFormatGroup | ImageFormatGroup | Descreve a saída do formato de imagem bruta. | ImageFormatGroup.unknown |
preferidoLensDirection | CameraLensDirection | Qual direção da lente é preferida ao usar a câmera pela primeira vez. | CameraLensDirection.back |
lockCaptureOrientation | DeviceOrientation? | Se a câmera deve ser travada na orientação específica durante as capturas. | nulo |
primeiro planoBuilder | ForegroundBuilder? | O construtor de widget em primeiro plano que cobrirá toda a visualização da câmera. | nulo |
visualizarTransformBuilder | PreviewTransformBuilder? | O construtor de widgets que transformará a visualização da câmera. | nulo |
onEntitySaving | EntitySaveCallback? | O tipo de retorno de chamada definido para salvar a entidade no visualizador. | nulo |
onError | CameraErrorHandler? | O manipulador de erros quando ocorreu algum erro durante o processo de separação. | nulo |
onXFileCapturado | XFileCapturedCallback? | A definição do tipo de retorno de chamada quando o XFile é capturado pela câmera. | nulo |
onMinimumRecordDurationNotMet | VoidCallback? | O retorno de chamada quando a gravação não atinge a duração mínima de gravação. | nulo |
onPickConfirmado | void Function(AssetEntity)? | O retorno de chamada quando a foto é tirada ou o vídeo é confirmado. | nulo |
permissãoRequestOption | PermissionRequestOption? | A opção de solicitação de permissão ao salvar o arquivo capturado usando o pacote photo_manager . | nulo |
State
s personalizados Todas as interfaces de usuário podem ser personalizadas por meio de State
s personalizados, incluindo:
CameraPickerState
CameraPickerViewerState
Depois de substituir State
s, passe-os pelo método de seleção, mais especificamente:
CameraPicker.pickFromCamera(createPickerState: () => CustomCameraPickerState());
CameraPickerViewer.pushToViewer(..., createViewerState: () => CustomCameraPickerViewerState());
Atualmente, a visualização não está sincronizada corretamente no iOS. Você pode encontrar mais detalhes nesta edição: flutter/flutter#89216 . Fora isso, envie problemas para descrever sua pergunta.
Os agradecimentos vão para essas pessoas maravilhosas (chave emoji):
Alex Li ? ? ? ? | Caijinglong ? | Lael | mjl0602 ? | AliasWang ? | codificação esquerda ? | Luong O Vinh |
luomo-pro ️️️️♿️ ? | LeonardoZhu | Nguyen Phuc Loi ? | Amós ? | Tee Yu junho |
Este projeto segue a especificação de todos os contribuidores. Contribuições de qualquer tipo são bem-vindas!