From b02d66c7d5796f9d935fbaa2c5eb4566df7b9a27 Mon Sep 17 00:00:00 2001 From: gianlucaparadise Date: Fri, 22 Jul 2022 07:36:59 +0200 Subject: [PATCH] MediaMetadata: strings workaround flutter --- example/lib/media_load_request_data_helper.dart | 17 +++++++++++++++++ example/lib/widgets/QueueItemHeading.dart | 13 +++++++------ .../expanded_controls/ExpandedControls.dart | 14 +++++++------- .../widgets/mini_controller/MiniController.dart | 14 ++++++++------ 4 files changed, 39 insertions(+), 19 deletions(-) diff --git a/example/lib/media_load_request_data_helper.dart b/example/lib/media_load_request_data_helper.dart index c9dfdc6..f5af7cd 100644 --- a/example/lib/media_load_request_data_helper.dart +++ b/example/lib/media_load_request_data_helper.dart @@ -1,9 +1,12 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter_cast_framework/cast.dart'; /// in seconds const double QUEUE_PRELOAD_TIME = 20; const mainVideo = const VideoInfo( + "Big Buck Bunny", + "Blender Foundation", "https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/mp4/BigBuckBunny.mp4", "mp4", 596 * 1000, @@ -13,6 +16,8 @@ const mainVideo = const VideoInfo( const List otherVideos = [ const VideoInfo( + "Elephants Dream", + "Blender Foundation", "https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/mp4/ElephantsDream.mp4", "mp4", 653 * 1000, @@ -20,6 +25,8 @@ const List otherVideos = [ "https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/images/780x1200/ElephantsDream-780x1200.jpg", ), const VideoInfo( + "Sintel", + "Blender Foundation", "https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/mp4/Sintel.mp4", "mp4", 888 * 1000, @@ -27,6 +34,8 @@ const List otherVideos = [ "https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/images/780x1200/Sintel-780x1200.jpg", ), const VideoInfo( + "Tears of Steel", + "Blender Foundation", "https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/mp4/TearsOfSteel.mp4", "mp4", 734 * 1000, @@ -37,6 +46,8 @@ const List otherVideos = [ class VideoInfo { const VideoInfo( + this.title, + this.studio, this.url, this.type, this.duration, @@ -44,6 +55,8 @@ class VideoInfo { this.poster, ); + final String title; + final String studio; final String url; final String type; final int duration; @@ -78,6 +91,10 @@ MediaInfo _getMediaInfo(VideoInfo video) { final bigImg = WebImage()..url = video.poster; final mediaMetadata = MediaMetadata() ..mediaType = MediaType.movie + ..strings = { + describeEnum(MediaMetadataKey.title): video.title, + describeEnum(MediaMetadataKey.subtitle): video.studio, + } ..webImages = [ img, bigImg, diff --git a/example/lib/widgets/QueueItemHeading.dart b/example/lib/widgets/QueueItemHeading.dart index a86ea66..9ed831b 100644 --- a/example/lib/widgets/QueueItemHeading.dart +++ b/example/lib/widgets/QueueItemHeading.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_cast_framework/cast.dart'; @@ -11,22 +12,22 @@ class QueueItemHeading extends StatelessWidget { @override Widget build(BuildContext context) { - // final titleText = mediaInfo?.mediaMetadata?.strings[MediaMetadataKey.title] - // final subtitleText = mediaInfo?.mediaMetadata?.strings[MediaMetadataKey.subtitle] - final titleText = ""; - final subtitleText = ""; + final titleText = mediaInfo + ?.mediaMetadata?.strings?[describeEnum(MediaMetadataKey.title)]; + final subtitleText = mediaInfo + ?.mediaMetadata?.strings?[describeEnum(MediaMetadataKey.subtitle)]; return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - titleText, + titleText ?? "", overflow: TextOverflow.ellipsis, maxLines: 1, ), Container(height: 2), Text( - subtitleText, + subtitleText ?? "", overflow: TextOverflow.ellipsis, maxLines: 1, ) diff --git a/lib/src/cast/widgets/expanded_controls/ExpandedControls.dart b/lib/src/cast/widgets/expanded_controls/ExpandedControls.dart index e2d92bd..40ac85f 100644 --- a/lib/src/cast/widgets/expanded_controls/ExpandedControls.dart +++ b/lib/src/cast/widgets/expanded_controls/ExpandedControls.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../../cast.dart'; @@ -137,18 +138,17 @@ class _ExpandedControlsState extends State { } Widget _getDecoratedToolbar(MediaInfo? mediaInfo) { - // Title and subtitle can't be retrieved at the moment - // final title = mediaInfo?.mediaMetadata?.strings[MediaMetadataKey.title] - // final subtitle = mediaInfo?.mediaMetadata?.strings[MediaMetadataKey.subtitle] - final title = ""; - final subtitle = ""; + final title = mediaInfo + ?.mediaMetadata?.strings?[describeEnum(MediaMetadataKey.title)]; + final subtitle = mediaInfo + ?.mediaMetadata?.strings?[describeEnum(MediaMetadataKey.subtitle)]; return Container( decoration: _topDownBlackGradient, child: ExpandedControlsToolbar( castFramework: widget.castFramework, - title: title, - subtitle: subtitle, + title: title ?? "", + subtitle: subtitle ?? "", onBackTapped: widget.onCloseRequested, ), ); diff --git a/lib/src/cast/widgets/mini_controller/MiniController.dart b/lib/src/cast/widgets/mini_controller/MiniController.dart index c833f29..e85a2cb 100644 --- a/lib/src/cast/widgets/mini_controller/MiniController.dart +++ b/lib/src/cast/widgets/mini_controller/MiniController.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../../cast.dart'; @@ -22,18 +23,19 @@ class MiniController extends StatelessWidget { Widget _getControls(MediaStatus? status) { final thumbnail = MiniControllerThumbnail(mediaInfo: status?.mediaInfo); - // final titleText = mediaInfo?.mediaMetadata?.strings[MediaMetadataKey.title] - // final subtitleText = mediaInfo?.mediaMetadata?.strings[MediaMetadataKey.subtitle] - final titleText = ""; - final subtitleText = ""; + final mediaInfo = status?.mediaInfo; + final titleText = mediaInfo + ?.mediaMetadata?.strings?[describeEnum(MediaMetadataKey.title)]; + final subtitleText = mediaInfo + ?.mediaMetadata?.strings?[describeEnum(MediaMetadataKey.subtitle)]; final title = Text( - titleText, + titleText ?? "", maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle(fontWeight: FontWeight.w500), ); final subtitle = Text( - subtitleText, + subtitleText ?? "", maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle(color: Colors.grey),