diff --git a/README.md b/README.md index 89ed1f6..b353274 100644 --- a/README.md +++ b/README.md @@ -143,10 +143,9 @@ I used this project to test the capabilities of the following technologies: ## Roadmap -* Volume in Expanded Controls -* Currently connected cast device name * CC in Expanded Controls * Handle Ad Break * Handle progress seek * Handle queue * Handle mini-player +* Produce HTML docs diff --git a/lib/src/cast/widgets/expanded_controls/ExpandedControls.dart b/lib/src/cast/widgets/expanded_controls/ExpandedControls.dart index a647b99..25fe5fe 100644 --- a/lib/src/cast/widgets/expanded_controls/ExpandedControls.dart +++ b/lib/src/cast/widgets/expanded_controls/ExpandedControls.dart @@ -2,12 +2,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_cast_framework/src/cast/widgets/expanded_controls/ExpandedControlsToolbar.dart'; import '../../../../cast.dart'; +import 'ExpandedControlsConnectedDeviceLabel.dart'; import 'ExpandedControlsPlayer.dart'; import 'ExpandedControlsProgress.dart'; -// TODO call framework to get cast device -const String castDevice = "cast device"; - const _topDownBlackGradient = BoxDecoration( gradient: LinearGradient( begin: Alignment.topCenter, @@ -32,13 +30,13 @@ const _bottomUpBlackGradient = BoxDecoration( class ExpandedControls extends StatefulWidget { final FlutterCastFramework castFramework; - final String castingToText; + final String? castingToText; final VoidCallback? onBackTapped; final controller = ExpandedControlsProgressController(); ExpandedControls({ required this.castFramework, - this.castingToText = "Casting to", + this.castingToText, this.onBackTapped, }); @@ -88,17 +86,15 @@ class _ExpandedControlsState extends State { } Widget _getDecoratedControls(BuildContext context, MediaInfo? mediaInfo) { - final textStyle = - Theme.of(context).textTheme.bodyText2?.copyWith(color: Colors.white); - return Container( decoration: _bottomUpBlackGradient, child: Column( children: [ Padding( padding: const EdgeInsets.all(8.0), - child: - Text("${widget.castingToText} $castDevice", style: textStyle), + child: ExpandedControlsConnectedDeviceLabel( + castFramework: widget.castFramework, + ), ), Padding( padding: const EdgeInsets.all(8.0), diff --git a/lib/src/cast/widgets/expanded_controls/ExpandedControlsConnectedDeviceLabel.dart b/lib/src/cast/widgets/expanded_controls/ExpandedControlsConnectedDeviceLabel.dart new file mode 100644 index 0000000..885ea20 --- /dev/null +++ b/lib/src/cast/widgets/expanded_controls/ExpandedControlsConnectedDeviceLabel.dart @@ -0,0 +1,36 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_cast_framework/cast.dart'; + +class ExpandedControlsConnectedDeviceLabel extends StatelessWidget { + final FlutterCastFramework castFramework; + final String castingToText; + + const ExpandedControlsConnectedDeviceLabel({ + Key? key, + required this.castFramework, + this.castingToText = "Casting to", + }) : super(key: key); + + @override + Widget build(BuildContext context) { + final textStyle = + Theme.of(context).textTheme.bodyText2?.copyWith(color: Colors.white); + + return FutureBuilder( + future: castFramework.castContext.sessionManager.getCastDevice(), + builder: (context, snapshot) { + if (snapshot.hasData) { + var castDevice = snapshot.data; + var castDeviceName = castDevice?.friendlyName ?? ""; + return Text("$castingToText $castDeviceName", style: textStyle); + } else if (snapshot.hasError) { + debugPrint("error while retrieving cast device ${snapshot.error}"); + return Text(""); + } else { + return Text(""); + } + }, + ); + } +}