aboutsummaryrefslogtreecommitdiffstats
path: root/lib/presentation/screens/media_player/media_player.dart
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2023-12-31 16:24:51 -0500
committerScott Murray <scott.murray@konsulko.com>2024-01-03 18:23:52 -0500
commit4742fde5c48726357cc8db06d237e9db6c3df608 (patch)
treedcca2b3e3c6cb3a4a46b7ae603f64fa9ce5a086c /lib/presentation/screens/media_player/media_player.dart
parentfcd868bd73d35bd79074f3425317152565aeb275 (diff)
Initial radio implementation
Notable changes: - Add radio gRPC API protobuf definitation and generated files. - Reworked existing single gRPC APIs library to split it into per-API libraries to avoid name collision issues. - Add radio gRPC client class and associated radio state class and RiverPod providers. - Split media controls and play list table classes into media player and radio specific versions to facilitate customization and wiring up their appropriate backends in a straightforward fashion. Some potential rationalization of styling widgets may be done as a follow up to avoid some duplication. - Added radio configuration and presets loading. The presets will be populated with the contents of a radio-presets.yaml file from the configured location, the default location is the /etc/xdg/AGL/ics-homescreen directory. - Implemented FM radio player against the radio gRPC API. For the sake of expediency, no attempt has been made to make the player able to handle AM band support. - Reworked media page navigation state so that active player is restored when coming back to the page. Logic has been added to start/stop the radio on navigating to or leaving the FM radio sub-page. This will potentially be reworked before CES to work with the pause/stop button present on the other pages. - Started pruning down global exports.dart a bit to remove files only used in a specific page/hierarchy, starting with media. Bug-AGL: SPEC-5029 Change-Id: I1ae0aca4a7a8218e69e4286c863f01509a1cccb7 Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Diffstat (limited to 'lib/presentation/screens/media_player/media_player.dart')
-rw-r--r--lib/presentation/screens/media_player/media_player.dart100
1 files changed, 0 insertions, 100 deletions
diff --git a/lib/presentation/screens/media_player/media_player.dart b/lib/presentation/screens/media_player/media_player.dart
deleted file mode 100644
index 3126ac1..0000000
--- a/lib/presentation/screens/media_player/media_player.dart
+++ /dev/null
@@ -1,100 +0,0 @@
-import 'package:flutter_ics_homescreen/presentation/screens/media_player/fm_player.dart';
-
-import '/export.dart';
-import 'widgets/media_volume_bar.dart';
-
-class MediaPlayerPage extends StatelessWidget {
- const MediaPlayerPage({super.key});
-
- static Page<void> page() =>
- const MaterialPage<void>(child: MediaPlayerPage());
- @override
- Widget build(BuildContext context) {
- Size size = MediaQuery.sizeOf(context);
-
- return Stack(
- children: [
- // SizedBox(
- // width: size.width,
- // height: size.height,
- // //color: Colors.black,
- // // decoration:
- // // BoxDecoration(gradient: AGLDemoColors.gradientBackgroundColor),
- // child: SvgPicture.asset(
- // 'assets/MediaPlayerBackground.svg',
- // alignment: Alignment.center,
- // fit: BoxFit.cover,
- // //width: 200,
- // //height: 200,
- // ),
- // ),
- SizedBox(
- width: size.width,
- height: size.height,
- // color: Colors.black,
- child: SvgPicture.asset(
- 'assets/MediaPlayerBackgroundTextures.svg',
- // alignment: Alignment.center,
- fit: BoxFit.cover,
- //width: 200,
- //height: 200,
- ),
- ),
- const Padding(
- padding: EdgeInsets.symmetric(vertical: 50, horizontal: 50),
- child: MediaPlayerBackground(),
- )
- //const MediaPlayer(),
- ],
- );
- }
-}
-
-class MediaPlayerBackground extends StatefulWidget {
- const MediaPlayerBackground({super.key});
-
- @override
- State<MediaPlayerBackground> createState() => _MediaPlayerBackgroundState();
-}
-
-class _MediaPlayerBackgroundState extends State<MediaPlayerBackground> {
- String selectedNav = "My Media";
- onPressed(type) {
- setState(() {
- selectedNav = type;
- });
- }
-
- @override
- Widget build(BuildContext context) {
- return SingleChildScrollView(
- child: Column(
- children: [
- const SizedBox(
- height: 55,
- ),
- PlayerNavigation(
- onPressed: (val) {
- onPressed(val);
- },
- ),
- Padding(
- padding: const EdgeInsets.symmetric(horizontal: 80),
- child: SingleChildScrollView(
- child: selectedNav == "My Media"
- ? const MediaPlayer()
- : selectedNav == "FM"
- ? const FMPlayer()
- : Container(),
- ),
- ),
- if (selectedNav == "My Media" || selectedNav == "FM")
- const Padding(
- padding: EdgeInsets.symmetric(horizontal: 144, vertical: 23.5),
- child: CustomVolumeSlider(),
- ),
- ],
- ),
- );
- }
-}