Язык: английский | 中文
Средство выбора камеры для проектов Flutter на основе пользовательского интерфейса WeChat, которое также является отдельным работоспособным расширением wechat_assets_picker.
Текущая версия WeChat, на которой основан пользовательский интерфейс: 8.0.49
. Дизайн пользовательского интерфейса будет обновлен в любое время после обновления 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 и поведении, обратитесь к документации API photo_manager для получения более подробной информации.
Большинство случаев использования подробно описаны и описаны в примерах. Пожалуйста, внимательно просмотрите пример, прежде чем у вас возникнут вопросы.
Если при запуске 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
в iOS требуется использование onEntitySaving
или onXFileCaptured
для обработки захваченного файла, AssetEntity
в этом случае недоступен, получение этого актива с его идентификатором приведет к сбою.Затем импортируйте пакет в свой код:
import 'package:wechat_camera_picker/wechat_camera_picker.dart' ;
Когда вы выбираете ресурсы, пакет получит параметр Locale?
из вашего BuildContext
и верните соответствующий текстовый делегат текущего языка. Убедитесь, что в вашем дереве виджетов есть действительный Locale
, доступ к которому можно получить из BuildContext
. В противном случае будет использоваться китайский делегат по умолчанию.
Языки делегатов встроенного текста:
Если вы хотите использовать пользовательский/фиксированный текстовый делегат, передайте его через CameraPickerConfig.textDelegate
.
final AssetEntity ? entity = await CameraPicker . pickFromCamera (context);
Используйте CameraPickerConfig
для получения дополнительных возможностей выбора.
final AssetEntity ? entity = await CameraPicker . pickFromCamera (
context,
pickerConfig : const CameraPickerConfig (),
);
Поля в CameraPickerConfig
:
Имя | Тип | Описание | Значение по умолчанию |
---|---|---|---|
включить запись | bool | Может ли сборщик записывать видео. | false |
толькоEnableRecording | bool | Может ли сборщик записывать только видео. Доступно только в том случае, если enableRecording установлено значение true . | false |
включитьTapRecording | bool | Разрешить ли запись, можно ли начать ее одним нажатием. Доступно только в том случае, если enableRecording установлено значение true . | false |
включить аудио | bool | Должен ли сборщик записывать звук. Доступно только с записью. | true |
включитьSetExposure | bool | Могут ли пользователи устанавливать точку воздействия, нажав. | true |
EnableExposureControlOnPoint | bool | Могут ли пользователи регулировать экспозицию в соответствии с заданным значением. | true |
включитьPinchToZoom | bool | Могут ли пользователи масштабировать камеру пальцем. | true |
EnablePullToZoomInRecord | bool | Могут ли пользователи увеличивать масштаб, потянув вверх при записи видео. | true |
EnableScaledPreview | bool | Следует ли масштабировать предварительный просмотр камеры во время захвата. | false |
следуетDeletePreviewFile | bool | Будет ли файл предварительного просмотра удаляться при открытии. | false |
должноAutoPreviewVideo | bool | Должно ли видео воспроизводиться мгновенно при предварительном просмотре. | true |
максимальная продолжительность записи | Duration? | Максимальная продолжительность процесса видеозаписи. | const Duration(seconds: 15) |
минимальная продолжительность записи | Duration | Минимальная продолжительность процесса видеозаписи. | const Duration(seconds: 1) |
тема | ThemeData? | Данные темы для средства выбора. | CameraPicker.themeData(wechatThemeColor) |
textDelegate | CameraPickerTextDelegate? | Текстовый делегат, управляющий текстом в виджетах. | CameraPickerTextDelegate |
разрешениеПредустановка | ResolutionPreset | Настоящее разрешение камеры. | ResolutionPreset.ultraHigh |
камераКварталПовороты | int | На количество четвертей оборотов по часовой стрелке изображение камеры должно поворачиваться. | 0 |
imageFormatGroup | ImageFormatGroup | Описывает выходные данные формата необработанного изображения. | ImageFormatGroup.unknown |
предпочтительное направление линзы | CameraLensDirection | Какое направление объектива является предпочтительным при первом использовании камеры. | CameraLensDirection.back |
блокировкаКаптуреОриентация | DeviceOrientation? | Должна ли камера быть зафиксирована в определенной ориентации во время съемки. | нулевой |
передний планСтроитель | ForegroundBuilder? | Конструктор виджетов переднего плана, который будет охватывать весь предварительный просмотр камеры. | нулевой |
предварительный просмотрTransformBuilder | PreviewTransformBuilder? | Конструктор виджетов, который изменит предварительный просмотр камеры. | нулевой |
onEntitySaving | EntitySaveCallback? | Тип обратного вызова определяет сохранение объекта в средстве просмотра. | нулевой |
onError | CameraErrorHandler? | Обработчик ошибок в случае возникновения какой-либо ошибки в процессе комплектования. | нулевой |
onXFileCaptured | XFileCapturedCallback? | Определение типа обратного вызова, когда XFile захватывается камерой. | нулевой |
onMinimumRecordDurationNotMet | VoidCallback? | Обратный вызов, когда при записи не соблюдена минимальная продолжительность записи. | нулевой |
onPickConfirmed | void Function(AssetEntity)? | Обратный вызов при съемке изображения или подтверждении видео. | нулевой |
разрешениеRequestOption | PermissionRequestOption? | Опция запроса разрешения при сохранении захваченного файла с помощью пакета photo_manager . | нулевой |
State
Все пользовательские интерфейсы можно настроить с помощью пользовательских State
, включая:
CameraPickerState
CameraPickerViewerState
После переопределения State
передайте их через метод выбора, а именно:
CameraPicker.pickFromCamera(createPickerState: () => CustomCameraPickerState());
CameraPickerViewer.pushToViewer(..., createViewerState: () => CustomCameraPickerViewerState());
В настоящее время предварительный просмотр неправильно синхронизируется на iOS. Более подробную информацию вы можете найти в этом выпуске: flutter/flutter#89216 . Кроме этого, пожалуйста, отправьте вопросы, чтобы описать ваш вопрос.
Спасибо этим замечательным людям (ключ смайлика):
Алекс Ли ? ? ? ? | Цайцзинлун ? | Лаэль | mjl0602 ? | ПсевдонимВанг ? | левое кодирование ? | Луонг Винь |
Луомо-про ️️️️♿️ ? | ЛеонардоЖу | Нгуен Фук Лой ? | Амос ? | Ти Ю Джун |
Этот проект соответствует спецификации всех участников. Вклад любого рода приветствуется!