Отображение медиа
Эффективное отображение медиа имеет решающее значение для улучшения пользовательского опыта в приложении FlutterFlow. Независимо от того, работаете ли вы с изображениями, аудио, видео или PDF, FlutterFlow предоставляет гибкие возможности для интеграции и управления медиа. В этом руководстве оп исано, как задавать источники медиа, настраивать параметры воспроизведения и внедрять лучшие практики, такие как отложенная загрузка, кэширование и BlurHash, для оптимизации производительности.
Типы медиа
Чтобы отображать медиа на виджетах, перейдите в Properties Panel и укажите источник медиа в параметре [Media] Type (например, ImageType, AudioType, VideoType). Вот доступные варианты:
Network
Введите URL медиа напрямую в поле ввода Path. Это для медиа, размещённых в Интернете.

Если медиа загружено в Firebase или Supabase, нажмите Set from Variable в поле Path и выберите Source как Widget State > Uploaded File URL.

Для медиа, загруженного через API, выберите Source как Action Outputs > [Action Output Variable Name] (API Response). Убедитесь, что ответ API содержит URL загруженного файла. Узнайте, как извлекать URL с помощью JSON path.

Чтобы обрабатывать сценарии, когда медиа загружается медленно или не загружается, вы можете задать заглушку. Нажмите Set from Variable в поле Path и укажите URL заглушки в свойстве Default Value.
Asset
Вы также можете отображать файлы медиа, загруженные в Assets. Assets — это ресурсы, такие как изображения, видео, документы, шрифты и другие файлы, которые вы включаете локально в проект. Чтобы загрузить assets, нажмите Media Assets в боковом меню слева и добавьте файлы напрямую с устройства. В качестве альтернативы вы можете напрямую загрузить и отобразить файлы при настройке виджетов медиа, нажав на иконку загрузки.
Подробности о том, как хранятся assets в проекте, см. в директории Assets в сгенерированном коде.

Uploaded File
Вы также можете обращаться к файлам медиа в приложении, которые временно хранятся в приложении. Например, если вы хотите предварительно просмотреть изображение перед отправкой в облачное хранилище, вы можете сделать это, установив источник как Widget State -> Uploaded Local File.

AudioPlayer
Виджет AudioPlayer позволяет интегрировать воспроизведение аудио в приложения. Вы можете воспроизводить аудио как из загруженных assets, так и из внешних URL. Подробности об обращении к медиа см. в разделе Отображение медиа.
Виджет AudioPlayer в FlutterFlow использует пакет assets_audio_player для воспроизведения аудио.
Параметры настройки
- Title: Укажите заголовок аудио в свойстве Title. Вы можете задать его напрямую или привязать к переменной, такой как переменная состояния приложения, ответ API или документ Firestore.
- Pause on Forward Navigation: По умолчанию аудио останавливается при переходе на другую страницу.
- Play in Background: Определите поведение аудио при переводе приложения в фоновый режим:
- Enabled: Аудио продолжает воспроизводиться.
- Disabled, restore on foreground: Аудио приостанавливается и возобновляется, когда приложение снова становится активным.
- Disabled, pause: Аудио останавливается сразу при переводе приложения в фоновый режим.
- Colors:
- Background Color: Настройте фон с помощью свойства Fill Color.
- Playback Button Color: Измените цвета кнопок воспроизведения и паузы.
- Active/Inactive Track Color: Измените цвет индикатора прогресса, показывающего текущую позицию воспроизведения.
- Elevation: Используйте свойство Elevation для изменения тени под плиткой аудио. Более высокое значение увеличивает размер тени, а значение 0 удаляет тень.
- Text Styling:
- Title Text: Настройте шрифт, размер и цвет заголовка в разделе Title Text Style.
- Playback Duration Text: Измените стиль текста длительности воспроизведения в разделе Playback Duration Text Style.
Audio Recording
Вы можете реализовать функциональность записи аудио с помощью действий Start Audio Recording и Stop Audio Recording.
В настоящее время запись аудио не поддерживается в режимах Run или Test из-за определённых ограничений.
Start Audio Recording [Action]
Это действие запускает запись. Оно также присваивает имя записи, которое вы можете использовать позже для остановки записи с помощью действия Stop Audio Recording.
Перед добавлением этого действия убедитесь, что вы запросили разрешение на микрофон. В блоке TRUE проверки условия разрешения добавьте действие Start Audio Recording. По умолчанию значение поля Name — это случайно сгенерированная строка. Вы можете изменить её на более описательное имя для удобства идентификации.
После запуска записи вы можете обновить переменные состояния, чтобы отразить изменения в UI. Например, вы можете включать/отключать кнопки или запускать анимации записи, чтобы предоставить визуальный сигнал о процессе. Этот шаг позволяет улучшить пользовательский опыт и обеспечить обратную связь в реальном времени во время записи.

Stop Audio Recording [Action]
Если у вас несколько действий записи аудио, все имена объектов Recorder (автоматически сгенерированные FlutterFlow или вручную заданные пользователем) перечислены в выпадающем списке Recorder Name. Выберите объект записи, который хотите остановить, и это остановит текущую запись.
Чтобы захватить и воспроизвести записанное аудио, обязательно укажите Action Output Variable Name, которое можно использовать с аудиоплеером.
Вот как настроить это действие:
- При добавлении этого действия выберите Recorder Name из выпадающего списка. Это будет имя, которое вы указали в действии Start Audio Recording.
- Укажите Action Output Variable Name. Это сохранит фактическую запись аудио, которую вы можете использовать с любым аудиоплеером. Запись хранится в типе данных Audio Path.
- Если вы хотите загрузить запись аудио в Firebase или Supabase, вы можете использовать действие Upload file. При добавлении этого действия:
- Установите Upload Type в предпочитаемый вариант.
- Установите File Type в Uploaded File, поскольку действие Stop Audio Recording внутренне хранит байты записанного аудио (в состоянии виджета).
- Установите File to Upload в Widget State > Recorded File.
- Для загрузки через API не нужно добавлять действие Upload file. Просто напрямую добавьте API call и выберите API, которое загрузит файл на ваш сервер. Note, что тело запроса для этого API должно быть в формате Multipart. Вы можете передать запись аудио через Widget State > Recorded File в переменной API. См., как настроить API для тела запроса multipart.
- После остановки записи вы можете обновить переменные состояния, чтобы отразить изменения в UI. Например, вы можете включать/отключать кнопки или останавливать анимации записи.
- Всегда полезно иметь механизм защиты, чтобы гарантировать правильную остановку записей, даже если пользователь забудет сделать это вручную. Например, вы можете использовать триггер действия On Dispose для остановки записи, когда пользователь закрывает приложение без ручной остановки.
Playing audio recording
После остановки записи вы можете просто предоставить Action Output Variable Name виджету Audio Player, чтобы начать воспроизведение записанного аудио.
Play or Stop Sound
Действия Play Sound и Stop Sound предоставляют гибкость для улучшения пользовательского опыта с помощью аудиоэффектов или фоновых звуков.
Play Sound [Action]
Действие Play Sound Action позволяет воспроизводить звук, который уведомляет пользователей о выполненном действии — например, проигрывать звук после обновления списка или отправки сообщения.
Рекомендуется использовать это действие только для коротких аудио. Для более длинных аудио рассмотрите добавление виджета AudioPlayer.
По умолчанию этому действию присваивается случайное Name для последующей остановки с помощью действия Stop Sound. Вы можете настроить громкость с помощью ползунка Volume (0.0 = без звука, 1.0 = полная громкость). Действие по умолчанию н еблокирующее, что позволяет последующим действиям запускаться немедленно. Чтобы дождаться завершения воспроизведения перед продолжением, включите опцию Await Playback.
- Feedback Sounds: Проигрывайте звуки для кликов по кнопкам, отправки форм или оповещений об ошибках, чтобы улучшить взаимодействие и обратную связь с пользователем.
- Notifications: Проигрывайте звуковые оповещения для напоминаний, сообщений или завершения задач.
- Gamification: Улучшайте игровые опыты с помощью звуковых эффектов для достижений, уровней или взаимодействий.
Stop Sound [Action]
Вы можете остановить звук, который в настоящее время воспроизводится и был запущен действием Play Sound. Например, если в приложении проигрываются звуковые эффекты, вам может потребоваться остановить их, когда приложение приостанавливается или останавливается.
Это действие доступно только если вы добавили действие Play Sound на странице.
VideoPlayer
Виджет VideoPlayer используется для показа видео из загруженных assets или по URL-ссылке. Виджет VideoPlayer может воспроизводить различные форматы видео, такие как MP4, MOV, WAV, MPEG и JPEG motion photos. Подробности об обращении к медиа см. в разделе Отображение медиа.
VideoPlayer использует пакет video_player для надёжного воспроизведения видео на разных платформах.
Параметры настройки
Виджет VideoPlayer включает несколько опций для соответствия дизайну и функциональности вашего приложения:
- Aspect Ratio: Установите желаемое соотношение сторон (например, 1.7 для 16:9), чтобы видео отображалось корректно.
- AutoPlay: Включите эту опцию, чтобы видео автоматически начинало воспроизводиться при загрузке страницы.
- Loop Video: Выберите, должно ли видео автоматически воспроизводиться заново после завершения.
- Show Controls: Отображайте элементы управления воспроизведением, включая кнопки play/pause и полосу поиска.
- Allow Full Screen: Позволяйте пользователям расширять видео в полноэкранный режим.
- Playback Speed Menu: Позволяйте пользователям регулировать скорость воспроизведения видео.
- Load on Page Load: При включении видео будет предварительно загружаться при загрузке страницы, что уменьшит время буферизации при начале воспроизведения пользователем.
- Pause on Forward Navigation: Если включено, видео автоматически приостанавливается при переходе пользователя на другую страницу.
YoutubePlayer
Виджет YouTubePlayer в FlutterFlow позволяет интегрировать и воспроизводить видео YouTube в приложении. Он предлагает настраиваемые опции воспроизведения и интуитивный интерфейс для улучшения пользовательского опыта.
YoutubePlayer использует кастомную версию пакета youtube_player_iframe, размещённую в репозитории GitHub FlutterFlow.
Параметры настройки
- Loop Video: При включении видео будет автоматически воспроизводиться заново после завершения.
- Mute Video: Запускает видео в заглушённом состоянии.
- Show Controls: Отображает элементы управления воспроизведением, такие как play/pause, громкость, субтитры и полноэкранный режим.
- Show Full Screen Control: Это специально отображает кнопку переключения в полноэкранный режим среди элементов управления.
- Pause on Forward Navigation: Автоматически приостанавливает видео при переходе пользователя на другую страницу.
- Strict Related Videos: Гарантирует, что связанные видео, показываемые в конце воспроизведения, будут из того же канала, что и текущее воспроизводимое видео.