diff --git a/lib/app_router.dart b/lib/app_router.dart index 4cddc6e..605e247 100644 --- a/lib/app_router.dart +++ b/lib/app_router.dart @@ -65,28 +65,6 @@ class AppRouter { path: '/feed-screen', name: 'feedScreen', builder: (context, state) => FeedScreenNew(), - routes: [ - GoRoute( - path: 'blog-post-create-screen', - name: 'blogPostCreateScreen', - builder: (context, state) => BlogPostCreateScreen.builder(context), - ), - GoRoute( - path: 'blog-post-screen', - name: 'blogPostScreen', - builder: (context, state) => BlogPostScreen(blogPostID: state.extra as String), - routes: [ - GoRoute( - path: 'blog-post-edit-screen', - name: 'blogPostEditScreen', - builder: (context, state) => BlogPostEditScreen.builder( - context, - state.extra, - ), - ), - ], - ), - ], ), GoRoute( path: '/diary-screen', @@ -100,6 +78,24 @@ class AppRouter { ), ], ), + GoRoute( + path: '/blog-post-create-screen', + name: 'blogPostCreateScreen', + builder: (context, state) => BlogPostCreateScreen.builder(context), + ), + GoRoute( + path: '/blog-post-screen', + name: 'blogPostScreen', + builder: (context, state) => BlogPostScreen(blogPostID: state.extra as String), + ), + GoRoute( + path: '/blog-post-edit-screen', + name: 'blogPostEditScreen', + builder: (context, state) => BlogPostEditScreen.builder( + context, + state.extra, + ), + ), GoRoute( path: '/chat-screen', name: 'chatScreen', diff --git a/lib/features/blog_post/presentation/pages/blog_post_screen.dart b/lib/features/blog_post/presentation/pages/blog_post_screen.dart index c46c8b1..8bb6630 100644 --- a/lib/features/blog_post/presentation/pages/blog_post_screen.dart +++ b/lib/features/blog_post/presentation/pages/blog_post_screen.dart @@ -294,7 +294,7 @@ class BlogPostScreen extends StatelessWidget { void tapMenu(String value, BuildContext context, BlogPostStateLoaded state) { if (value == 'edit') { - GoRouter.of(context).goNamed( + GoRouter.of(context).pushNamed( 'blogPostEditScreen', extra: state.blogPost.id.toString(), ); diff --git a/lib/features/blog_post_create/presentation/pages/blog_post_create_screen.dart b/lib/features/blog_post_create/presentation/pages/blog_post_create_screen.dart index 39c3f4e..d829514 100644 --- a/lib/features/blog_post_create/presentation/pages/blog_post_create_screen.dart +++ b/lib/features/blog_post_create/presentation/pages/blog_post_create_screen.dart @@ -9,7 +9,7 @@ import 'package:image_picker/image_picker.dart'; import '../../../../presentation/feed/blog_post_create_screen/bloc/blog_post_create_bloc.dart'; import '../../../../presentation/feed/blog_post_create_screen/models/blog_post_create_model.dart'; -class BlogPostCreateScreen extends StatelessWidget { +class BlogPostCreateScreen extends StatefulWidget { const BlogPostCreateScreen({Key? key}) : super(key: key); static Widget builder(BuildContext context) { @@ -21,6 +21,11 @@ class BlogPostCreateScreen extends StatelessWidget { ); } + @override + State createState() => _BlogPostCreateScreenState(); +} + +class _BlogPostCreateScreenState extends State { Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { @@ -115,7 +120,7 @@ class BlogPostCreateScreen extends StatelessWidget { } } -_submitForm(BuildContext context, String title, String description, String youtubeURL) { +_submitForm(BuildContext context, String title, String description, String youtubeURL) async { String? titleError = _validateTitle(title); String? descriptionError = _validateDescription(description); String? youtubeURLError = _validateYouTubeLink(youtubeURL); diff --git a/lib/features/feed/presentation/pages/feed_screen.dart b/lib/features/feed/presentation/pages/feed_screen.dart index e97b39e..93697eb 100644 --- a/lib/features/feed/presentation/pages/feed_screen.dart +++ b/lib/features/feed/presentation/pages/feed_screen.dart @@ -108,7 +108,7 @@ class FeedScreen extends StatelessWidget { flex: 1, child: CustomOutlinedButton( text: "+", - onPressed: () => GoRouter.of(context).goNamed('blogPostCreateScreen'), + onPressed: () => GoRouter.of(context).pushNamed('blogPostCreateScreen'), buttonStyle: CustomButtonStyles.outlinePrimaryTL15, ), ), diff --git a/lib/features/feed/presentation/pages/feed_screen_new.dart b/lib/features/feed/presentation/pages/feed_screen_new.dart index bdd2476..6b5e183 100644 --- a/lib/features/feed/presentation/pages/feed_screen_new.dart +++ b/lib/features/feed/presentation/pages/feed_screen_new.dart @@ -6,6 +6,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:go_router/go_router.dart'; class FeedScreenNew extends StatefulWidget { const FeedScreenNew({super.key}); @@ -61,38 +62,41 @@ class _FeedScreenNewState extends State { } _buildAllBlogPosts() { - return BlocBuilder( - builder: (BuildContext context, FeedState state) { - if (state is FeedStateLoaded) { - return ListView.separated( - padding: EdgeInsets.symmetric(vertical: 8), - shrinkWrap: true, - physics: BouncingScrollPhysics(), - itemBuilder: (context, index) { - return BlogPostWidget(feedBlogPostModel: state.feedBlogPostList[index]); - }, - separatorBuilder: (context, index) { - return SizedBox(height: 8); - }, - itemCount: state.feedBlogPostList.length, - ); - } else if (state is FeedStateError) { - return Scaffold( - body: Padding( - padding: const EdgeInsets.all(16), - child: Center( - child: Text(state.errorMessage), + return RefreshIndicator( + onRefresh: () => context.read().loadFeedBlogPostList(), + child: BlocBuilder( + builder: (BuildContext context, FeedState state) { + if (state is FeedStateLoaded) { + return ListView.separated( + padding: EdgeInsets.symmetric(vertical: 8), + shrinkWrap: true, + physics: BouncingScrollPhysics(), + itemBuilder: (context, index) { + return BlogPostWidget(feedBlogPostModel: state.feedBlogPostList[index]); + }, + separatorBuilder: (context, index) { + return SizedBox(height: 8); + }, + itemCount: state.feedBlogPostList.length, + ); + } else if (state is FeedStateError) { + return Scaffold( + body: Padding( + padding: const EdgeInsets.all(16), + child: Center( + child: Text(state.errorMessage), + ), ), - ), - ); - } else { - return Scaffold( - body: Center( - child: CupertinoActivityIndicator(), - ), - ); - } - }, + ); + } else { + return Scaffold( + body: Center( + child: CupertinoActivityIndicator(), + ), + ); + } + }, + ), ); } @@ -124,7 +128,7 @@ class _FeedScreenNewState extends State { _addBlogPostButton() { return InkWell( - onTap: () {}, + onTap: () => GoRouter.of(context).pushNamed('blogPostCreateScreen'), borderRadius: BorderRadius.circular(64), child: Ink( decoration: BoxDecoration( diff --git a/lib/features/feed/presentation/widgets/blog_post_widget.dart b/lib/features/feed/presentation/widgets/blog_post_widget.dart index b7d26df..6bf0f7e 100644 --- a/lib/features/feed/presentation/widgets/blog_post_widget.dart +++ b/lib/features/feed/presentation/widgets/blog_post_widget.dart @@ -4,6 +4,7 @@ import 'package:eatvio_app/core/app_export.dart'; import 'package:eatvio_app/features/chat/presentation/pages/photo_view_screen.dart'; import 'package:eatvio_app/features/feed/models/feed_blog_post_model.dart'; import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; class BlogPostWidget extends StatefulWidget { final FeedBlogPostModel feedBlogPostModel; @@ -17,8 +18,11 @@ class BlogPostWidget extends StatefulWidget { class _BlogPostWidgetState extends State { @override Widget build(BuildContext context) { - return GestureDetector( - onTap: () {}, + return InkWell( + onTap: () => GoRouter.of(context).pushNamed( + 'blogPostScreen', + extra: widget.feedBlogPostModel.id.toString(), + ), child: Ink( decoration: BoxDecoration( borderRadius: BorderRadius.circular(12), @@ -45,17 +49,17 @@ class _BlogPostWidgetState extends State { ], ), ), - SizedBox(height: 12), + if (widget.feedBlogPostModel.title.isNotEmpty || widget.feedBlogPostModel.description.isNotEmpty) SizedBox(height: 12), Padding( padding: const EdgeInsets.symmetric(horizontal: 12), child: Text(widget.feedBlogPostModel.title), ), - SizedBox(height: 8), + if (widget.feedBlogPostModel.title.isNotEmpty && widget.feedBlogPostModel.description.isNotEmpty) SizedBox(height: 8), Padding( padding: const EdgeInsets.symmetric(horizontal: 12), child: Text(widget.feedBlogPostModel.description), ), - SizedBox(height: 8), + if (widget.feedBlogPostModel.title.isNotEmpty || widget.feedBlogPostModel.description.isNotEmpty) SizedBox(height: 8), GestureDetector( onTap: () { context.pushTransparentRoute( @@ -73,7 +77,7 @@ class _BlogPostWidgetState extends State { ), ), ), - SizedBox(height: 8), + SizedBox(height: 12), Padding( padding: const EdgeInsets.symmetric(horizontal: 12), child: Row( diff --git a/lib/presentation/users/subscribers_screen/subscribers_screen.dart b/lib/presentation/users/subscribers_screen/subscribers_screen.dart index 01fb9a7..bb968f2 100644 --- a/lib/presentation/users/subscribers_screen/subscribers_screen.dart +++ b/lib/presentation/users/subscribers_screen/subscribers_screen.dart @@ -139,7 +139,7 @@ class SubscribersScreen extends StatelessWidget { flex: 1, child: CustomOutlinedButton( text: "+", - onPressed: () => GoRouter.of(context).goNamed('blogPostCreateScreen'), + onPressed: () => GoRouter.of(context).pushNamed('blogPostCreateScreen'), buttonStyle: CustomButtonStyles.outlinePrimaryTL15, ), ),