diff --git a/lib/pages/components/ibus_display.dart b/lib/pages/components/ibus_display.dart index 3be42cc..4f49763 100644 --- a/lib/pages/components/ibus_display.dart +++ b/lib/pages/components/ibus_display.dart @@ -124,7 +124,7 @@ class _ibus_displayState extends State { Transform.translate( offset: Offset(0, -7), child: Text( - "Bus Stopping", + "", style: const TextStyle( fontSize: 20, color: Colors.orange, diff --git a/lib/pages/home.dart b/lib/pages/home.dart index 33e9644..1e11d49 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -3,6 +3,7 @@ import 'package:bus_infotainment/pages/components/ibus_display.dart'; import 'package:bus_infotainment/singletons/live_information.dart'; import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; class pages_Home extends StatelessWidget { const pages_Home({super.key}); @@ -30,7 +31,13 @@ class pages_Home extends StatelessWidget { height: 10, ), - _QuickAnnouncements(), + _QuickAnnouncements_IBUS(), + + SizedBox( + height: 10, + ), + + QuickAnnouncement(), ], ) @@ -39,27 +46,27 @@ class pages_Home extends StatelessWidget { } } -class _QuickAnnouncements extends StatefulWidget { +class _QuickAnnouncements_IBUS extends StatefulWidget { - _QuickAnnouncements({super.key}); + _QuickAnnouncements_IBUS({super.key}); @override - State<_QuickAnnouncements> createState() => _QuickAnnouncementsState(); + State<_QuickAnnouncements_IBUS> createState() => _QuickAnnouncementsState_IBUS(); } -class _QuickAnnouncementsState extends State<_QuickAnnouncements> { +class _QuickAnnouncementsState_IBUS extends State<_QuickAnnouncements_IBUS> { List announcements = []; int _currentIndex = 0; - _QuickAnnouncementsState() { + _QuickAnnouncementsState_IBUS() { LiveInformation liveInformation = LiveInformation(); for (ManualAnnouncementEntry announcement in liveInformation.manualAnnouncements) { announcements.add( - _QuickAnnouncement(announcement: announcement, index: liveInformation.manualAnnouncements.indexOf(announcement)) + _QuickAnnouncement_IBUS(announcement: announcement, index: liveInformation.manualAnnouncements.indexOf(announcement)) ); } } @@ -322,12 +329,12 @@ int wrap(int i, int j, int length) { return ((i - j) % length + length) % length; } -class _QuickAnnouncement extends StatelessWidget { +class _QuickAnnouncement_IBUS extends StatelessWidget { final ManualAnnouncementEntry announcement; final int index; - const _QuickAnnouncement({super.key, required this.announcement, required this.index}); + const _QuickAnnouncement_IBUS({super.key, required this.announcement, required this.index}); @override Widget build(BuildContext context) { @@ -407,4 +414,164 @@ class _QuickAnnouncement extends StatelessWidget { ); } +} + +class QuickAnnouncement extends StatelessWidget { + + List announcementButtons = []; + + QuickAnnouncement({super.key}){ + + LiveInformation liveInformation = LiveInformation(); + + for (ManualAnnouncementEntry entry in liveInformation.manualAnnouncements) { + announcementButtons.add( + _QuickAnnouncement_Entry(manualAnnouncementEntry: entry) + ); + } + + } + + int _currentIndex = 0; + + @override + Widget build(BuildContext context) { + + List UsingAnnouncements = []; + + for (int i = 0; i < 4; i++) { + + Widget widget = announcementButtons[wrap(_currentIndex + i, 0, announcementButtons.length)]; + + UsingAnnouncements.add(widget); + UsingAnnouncements.add( + SizedBox( + height: 10, + ) + ); + } + + + // TODO: implement build + return Container( + + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(10)), + color: Colors.grey.shade900, + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.3), + blurRadius: 4, + spreadRadius: 4 + ) + ] + ), + + padding: EdgeInsets.all(10), + + child: Column( + + crossAxisAlignment: CrossAxisAlignment.start, + + children: [ + + Row( + children: [ + Container( + + decoration: BoxDecoration( + color: Colors.grey.shade800, + borderRadius: BorderRadius.circular(5), + ), + + padding: EdgeInsets.all(8), + + child: Text( + "Quick Announcements", + style: GoogleFonts.montserrat( + fontSize: 20, + fontWeight: FontWeight.bold, + color: Colors.white, + height: 1 + ), + ), + ), + + // Container + + ElevatedButton( + onPressed: () { + _currentIndex = wrap(_currentIndex + 4, 0, announcementButtons.length); + // setState(() {}); + }, + child: const Icon( + Icons.arrow_back, + color: Colors.white, + ) + ), + + ElevatedButton( + onPressed: () { + _currentIndex = wrap(_currentIndex + 4, 0, announcementButtons.length); + // setState(() {}); + }, + child: const Icon( + Icons.arrow_forward, + color: Colors.white, + ) + ) + + ], + ), + + Container( + margin: EdgeInsets.symmetric(vertical: 10), + height: 1, + color: Colors.grey.shade600, + ), + + ...UsingAnnouncements, + + ], + + ) + ); + } + +} + +class _QuickAnnouncement_Entry extends StatelessWidget { + + final ManualAnnouncementEntry manualAnnouncementEntry; + + const _QuickAnnouncement_Entry({super.key, required this.manualAnnouncementEntry}); + + + + @override + Widget build(BuildContext context) { + // TODO: implement build + return Container( + + decoration: BoxDecoration( + color: Colors.grey.shade800, + borderRadius: BorderRadius.circular(5), + ), + + padding: EdgeInsets.all(8), + + width: double.infinity, + + child: Text( + manualAnnouncementEntry.shortName, + style: GoogleFonts.montserrat( + fontSize: 20, + fontWeight: FontWeight.bold, + color: Colors.white + ), + ), + + ); + } + } \ No newline at end of file diff --git a/lib/pages/routes.dart b/lib/pages/routes.dart index 09bdfba..68cac98 100644 --- a/lib/pages/routes.dart +++ b/lib/pages/routes.dart @@ -110,6 +110,7 @@ class _Route extends StatelessWidget { ), ], color: Colors.grey.shade900, + borderRadius: BorderRadius.circular(10), ), margin: const EdgeInsets.symmetric(horizontal: 10), @@ -128,16 +129,10 @@ class _Route extends StatelessWidget { decoration: BoxDecoration( color: Colors.grey.shade800, - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.5), - spreadRadius: 2, - blurRadius: 2, - ), - ], + borderRadius: BorderRadius.circular(5), ), - padding: const EdgeInsets.all(5), + padding: const EdgeInsets.all(8), child: Text( "Route: ${route.routeNumber}", @@ -186,17 +181,11 @@ class _Variant extends StatelessWidget { Container( decoration: BoxDecoration( - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.5), - spreadRadius: 2, - blurRadius: 2, - ), - ], color: Colors.grey.shade800, + borderRadius: BorderRadius.circular(5), ), - padding: const EdgeInsets.all(5), + padding: const EdgeInsets.all(8), child: Column( @@ -213,6 +202,7 @@ class _Variant extends StatelessWidget { fontSize: 15, fontWeight: FontWeight.bold, color: Colors.white, + height: 1, ), ), diff --git a/lib/singletons/live_information.dart b/lib/singletons/live_information.dart index 8769c0d..92e4465 100644 --- a/lib/singletons/live_information.dart +++ b/lib/singletons/live_information.dart @@ -8,7 +8,6 @@ import 'package:bus_infotainment/utils/audio%20wrapper.dart'; import 'package:bus_infotainment/utils/delegates.dart'; import 'package:flutter/services.dart'; import 'package:http/http.dart' as http; -import 'package:just_audio/just_audio.dart'; class LiveInformation {