From dfe52b77ef20fb6647256c8f4e4e69023b21be8a Mon Sep 17 00:00:00 2001 From: AYM1607 Date: Fri, 26 Apr 2019 21:14:52 -0500 Subject: [PATCH] Events screen now shows the events linked to the user --- ios/Runner.xcodeproj/project.pbxproj | 2 +- lib/src/blocs/events_bloc.dart | 3 ++ lib/src/screens/events_screen.dart | 50 ++++++++++++++++------------ lib/src/widgets/event_list_tile.dart | 35 +++++++++---------- 4 files changed, 47 insertions(+), 43 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index b4e6d8f..8f2981f 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -304,7 +304,7 @@ ); inputPaths = ( "${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", - "${PODS_ROOT}/../.symlinks/flutter/ios/Flutter.framework", + "${PODS_ROOT}/../.symlinks/flutter/ios-release/Flutter.framework", ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( diff --git a/lib/src/blocs/events_bloc.dart b/lib/src/blocs/events_bloc.dart index 505e737..354f344 100644 --- a/lib/src/blocs/events_bloc.dart +++ b/lib/src/blocs/events_bloc.dart @@ -22,6 +22,9 @@ class EventsBloc { /// An observable of the current logged in user. Observable get userStream => _auth.userStream; + /// An observable of the events linked to the current user. + Observable> get events => _events.stream; + /// Initiates the fetching process of events linked to the current user. Future fetchEvents() async { final userModel = await _auth.getCurrentUserModel(); diff --git a/lib/src/screens/events_screen.dart b/lib/src/screens/events_screen.dart index c3d6477..383dcf9 100644 --- a/lib/src/screens/events_screen.dart +++ b/lib/src/screens/events_screen.dart @@ -4,6 +4,7 @@ import '../blocs/events_bloc.dart'; import '../models/event_model.dart'; import '../widgets/app_bar.dart'; import '../widgets/event_list_tile.dart'; +import '../widgets/loading_indicator.dart'; import '../widgets/populated_drawer.dart'; class EventsScreen extends StatefulWidget { @@ -15,6 +16,11 @@ class _EventsScreenState extends State { /// An instance of the bloc for this screen. final EventsBloc bloc = EventsBloc(); + initState() { + super.initState(); + bloc.fetchEvents(); + } + Widget build(BuildContext context) { return StreamBuilder( stream: bloc.userStream, @@ -38,28 +44,28 @@ class _EventsScreenState extends State { title: 'My Events', hasDrawer: true, ), - body: ListView( - padding: EdgeInsets.only(top: 15), - children: [ - EventListTile( - event: EventModel( - id: '1', - name: 'Math', - pendigTasks: 3, - media: [], - when: [ - true, - true, - false, - false, - true, - ], - highPriority: 2, - mediumPriority: 1, - lowPriority: 0, - ), - ) - ], + body: StreamBuilder( + stream: bloc.events, + builder: (context, AsyncSnapshot> eventsSnap) { + if (!eventsSnap.hasData) { + return Center( + child: LoadingIndicator(), + ); + } + return ListView( + padding: EdgeInsets.only(top: 15), + children: eventsSnap.data + .map( + (event) => Padding( + padding: EdgeInsets.only(bottom: 15), + child: EventListTile( + event: event, + ), + ), + ) + .toList(), + ); + }, ), ); }, diff --git a/lib/src/widgets/event_list_tile.dart b/lib/src/widgets/event_list_tile.dart index 4b7e141..5cb70cd 100644 --- a/lib/src/widgets/event_list_tile.dart +++ b/lib/src/widgets/event_list_tile.dart @@ -36,29 +36,10 @@ class EventListTile extends StatelessWidget with Tile { _OcurranceIdicator(ocurrance: event.when), ], ), - Column( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Row( - children: [ - SizedBox( - width: 80, - ), - ActionButton( - color: Colors.white, - textColor: Colors.black, - text: 'Resources', - leadingIconData: FontAwesomeIcons.listAlt, - onPressed: () => Navigator.of(context) - .pushNamed('event/${event.name}'), - ), - ], - ), - ], - ), ], ), ), + getResourcesButton(context), getPriorityIndicator(), getTasksIndicator(), ], @@ -68,6 +49,20 @@ class EventListTile extends StatelessWidget with Tile { ); } + Widget getResourcesButton(BuildContext context) { + return Positioned( + bottom: 8, + right: 23, + child: ActionButton( + color: Colors.white, + textColor: Colors.black, + text: 'Resources', + leadingIconData: FontAwesomeIcons.listAlt, + onPressed: () => Navigator.of(context).pushNamed('event/${event.name}'), + ), + ); + } + Widget getPriorityIndicator() { final color = getColorFromEvent(event); return Row(