Я использую Chewie для отображения видео в своем приложении Flutter. У меня есть полноэкранное видео, похожее на изображение ниже:
Я хочу отображать видео в следующем формате с соотношением сторон 1:1.
Можно ли добиться этого автоматически с помощью Chewie, не растягивая и не сжимая видео, или есть другой способ добиться этого. Я пробовал различные решения, которые нашел в Интернете, используя виджеты AspectRatio, FittedBox и SizedBox.expanded, но безуспешно.





Вот комбинированный подход, который включает в себя лучшие аспекты предыдущих предложений и решает потенциальные проблемы:
Свойство autoInitialize Чуви не всегда может ожидать фактического соотношения сторон видео. Чтобы обеспечить контроль, вручную инициализируйте VideoPlayerController:
final videoPlayerController = VideoPlayerController.network(yourVideoUrl);
Future<void> initializePlayer() async {
await videoPlayerController.initialize();
setState(() {});} // Rebuild the widget with the aspect ratio
Вызовите InitializePlayer() в вашем initState или аналогичный метод жизненного цикла.
Оберните виджет Chewie виджетом AspectRatio:
AspectRatio(
aspectRatio: videoPlayerController.value.aspectRatio,
child: Chewie(...),),// Your Chewie configuration
Это гарантирует, что виджет Chewie будет соблюдать естественное соотношение сторон видео в контейнере AspectRatio. 3. Необязательно: Ограничение внутри контейнера (при необходимости):
Если вам нужен дополнительный контроль над размещением видео, оберните виджет AspectRatio контейнером:
Container(
width: double.infinity,
height: double.infinity,
child: AspectRatio(
aspectRatio: videoPlayerController.value.aspectRatio,
child: Chewie(...),),),
Это гарантирует, что видео заполнит доступное пространство, сохраняя при этом соотношение сторон внутри контейнера.
Шаги 1 и 2 работают хорошо, но я получаю сообщение об ошибке «BoxConstraints приводит к бесконечной высоте». когда я добавляю Container. Как мне это решить?
скорее всего, здесь вы можете использовать миниатюру вместо плеера