diff --git a/lib/ui/views/community/clubs/clubs_view_components.dart b/lib/ui/views/community/clubs/clubs_view_components.dart index 4fd3a6a..55d1d2b 100644 --- a/lib/ui/views/community/clubs/clubs_view_components.dart +++ b/lib/ui/views/community/clubs/clubs_view_components.dart @@ -49,20 +49,16 @@ class ClubsData extends ViewModelWidget { padding: const EdgeInsets.symmetric(horizontal: 18).r, child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ 10.verticalSpace, - Hero( - tag: clubShortHand, - child: Center( - child: ClipRRect( - borderRadius: BorderRadius.circular(16.0).r, - child: CachedNetworkImage( - height: 276.h, - width: 395.w, - fit: BoxFit.fill, - imageUrl: clubImage, - placeholder: (context, url) => - const CircularLoadingIndicator(), - errorWidget: (context, url, error) => const Icon(Icons.error), - ), + Center( + child: ClipRRect( + borderRadius: BorderRadius.circular(16.0).r, + child: CachedNetworkImage( + height: 276.h, + width: 395.w, + fit: BoxFit.fill, + imageUrl: clubImage, + placeholder: (context, url) => const CircularLoadingIndicator(), + errorWidget: (context, url, error) => const Icon(Icons.error), ), ), ), diff --git a/lib/ui/views/community/community_view.dart b/lib/ui/views/community/community_view.dart index ba42ec0..b8e8486 100644 --- a/lib/ui/views/community/community_view.dart +++ b/lib/ui/views/community/community_view.dart @@ -1,12 +1,9 @@ import 'dart:async'; -import 'dart:convert'; import 'package:abhiyaan/theme/responsive_utils.dart'; import 'package:abhiyaan/ui/common/circular_loading_indicator.dart'; import 'package:abhiyaan/ui/common/toast_message.dart'; import 'package:abhiyaan/ui/views/community/detailed_blogs/detailed_blogs_view.dart'; -// import 'package:abhiyaan/ui/views/community/uni_clubs/uni_clubs_view.dart'; import 'package:cached_network_image/cached_network_image.dart'; -import 'package:http/http.dart' as http; import 'package:abhiyaan/file_exporter.dart'; import 'package:abhiyaan/services/auth_service.dart'; import 'package:abhiyaan/services/firestore_service.dart'; @@ -14,7 +11,6 @@ import 'package:abhiyaan/ui/common/cached_network_image.dart'; import 'package:carousel_slider/carousel_slider.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:flutter_animate/flutter_animate.dart'; -import 'package:flutter/cupertino.dart'; part "community_view_components.dart"; part "community_view_model.dart"; @@ -29,7 +25,6 @@ class CommunityView extends StatelessWidget { disposeViewModel: false, onViewModelReady: (viewModel) => viewModel.init(context), builder: (context, model, child) { - final analyticsService = locator(); FontThemeClass fontThemeClass = FontThemeClass(); return Scaffold( backgroundColor: context.colorScheme.scaffold, @@ -37,184 +32,141 @@ class CommunityView extends StatelessWidget { ? const CircularLoadingIndicator() : SafeArea( minimum: const EdgeInsets.symmetric(horizontal: 18).r, - child: CustomScrollView( + child: SingleChildScrollView( physics: const BouncingScrollPhysics( parent: AlwaysScrollableScrollPhysics()), - slivers: [ - CupertinoSliverRefreshControl( - onRefresh: () async { - analyticsService.logEvent( - eventName: "Quote_Refreshed", - value: "Refresh Quote drag down", - ); - await Future.delayed(const Duration(seconds: 1)); - await model.fetchAffirmation(); - }, - ), - SliverList( - delegate: SliverChildListDelegate( - [ - 18.verticalSpace, - Center( - child: Text( - "Community", - style: fontThemeClass.title( - context, - fontWeight: FontWeight.bold, - ), - ), - ), - QuoteCard( - quote: model.affirmation, - autherName: model.authorName, - ) - .animate( - delay: 200.ms, - ) - .fadeIn( - curve: Curves.easeInOutCubic, - duration: 600.ms, - ), - const SectionText(title: "Blogs"), - // Add Blogs here - SizedBox( - height: 270.h, - width: double.infinity, - child: CarouselSlider( - options: CarouselOptions( - onPageChanged: (index, reason) { - model.updateBlogIndex(index); - }, - height: 270.h, - viewportFraction: 1, - autoPlay: true, - initialPage: 0, - autoPlayAnimationDuration: 900.milliseconds, - autoPlayCurve: Curves.easeInOutCubic, - autoPlayInterval: 4.seconds, - pauseAutoPlayOnTouch: true, - scrollPhysics: - const BouncingScrollPhysics(), - ), - items: model.blogsData - .map( - (data) => GestureDetector( - onTap: () { - model.navigateToDetailedBlogPage( - data, context); - }, - child: - CommunityBlogs(blogsData: data), - ), - ) - .toList()), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + 18.verticalSpace, + Center( + child: Text( + "Community", + style: fontThemeClass.title( + context, + fontWeight: FontWeight.bold, ), - 12.verticalSpace, - Center( - child: AnimatedSmoothIndicator( - activeIndex: model.currentBlogIndex, - count: model.blogsData.length, - effect: JumpingDotEffect( - dotHeight: 8, - dotWidth: 8, - dotColor: - context.colorScheme.secondarySectionColor, - activeDotColor: - context.colorScheme.accentColor, - spacing: 4, - ), + ), + ), + if (model.universalClubsData.isEmpty) + QuoteCard( + quote: model.affirmation, + autherName: model.authorName, + ) + .animate( + delay: 200.ms, + ) + .fadeIn( + curve: Curves.easeInOutCubic, + duration: 600.ms, ), - ), - model.departmentClubsData.isEmpty - ? Container() - : const SectionText(title: "Departmental Clubs") - .animate( - delay: 250.ms, - ) - .fadeIn( - curve: Curves.easeInOutCubic, - duration: 600.ms, - ), - model.departmentClubsData.isEmpty - ? Container() - : SizedBox( - height: 120.h, - width: double.infinity, - child: CarouselSlider.builder( - itemCount: - model.departmentClubsData.length, - options: model.clubsCarosoulOptions, - itemBuilder: (context, index, realIndex) { - return Padding( - padding: index == 0 - ? const EdgeInsets.only(right: 0) - .r - : const EdgeInsets.only(left: 8.0) - .r, - child: DepartmentClubs( - data: model - .departmentClubsData[index]), - ); - }, - ), - ).animate(delay: 200.ms).fadeIn( - curve: Curves.easeInOutCubic, - duration: 600.ms), - - model.universalClubsData.isEmpty - ? Container() - : const SectionText(title: "Universal Clubs") - .animate( - delay: 250.ms, - ) - .fadeIn( - curve: Curves.easeInOutCubic, - duration: 600.ms, - ), - model.universalClubsData.isEmpty - ? Container() - : SizedBox( - height: 120.h, - width: double.infinity, - child: CarouselSlider.builder( - itemCount: - model.universalClubsData.length, - options: model.clubsCarosoulOptions, - itemBuilder: (context, index, realIndex) { - return Padding( - padding: index == 0 - ? const EdgeInsets.only(right: 0) - .r - : const EdgeInsets.only(left: 8.0) - .r, - child: UniversalClubs( - data: model - .universalClubsData[index]), - ); + const SectionText(title: "Blogs"), + SizedBox( + height: 270.h, + width: double.infinity, + child: CarouselSlider( + options: CarouselOptions( + onPageChanged: (index, reason) { + model.updateBlogIndex(index); + }, + height: 270.h, + viewportFraction: 1, + autoPlay: true, + initialPage: 0, + autoPlayAnimationDuration: 900.milliseconds, + autoPlayCurve: Curves.easeInOutCubic, + autoPlayInterval: 4.seconds, + pauseAutoPlayOnTouch: true, + scrollPhysics: const BouncingScrollPhysics(), + ), + items: model.blogsData + .map( + (data) => GestureDetector( + onTap: () { + model.navigateToDetailedBlogPage( + data, context); }, + child: CommunityBlogs(blogsData: data), ), - ).animate(delay: 200.ms).fadeIn( - curve: Curves.easeInOutCubic, - duration: 600.ms), - 12.verticalSpace, - Container( - padding: const EdgeInsets.all(10), - alignment: Alignment.center, - child: Text( - "Scroll Down To Refresh", - style: FontThemeClass().caption( - context, - color: - context.colorScheme.secondarySectionColor, - fontWeight: FontWeight.w600, - ), - ), + ) + .toList()), + ), + 12.verticalSpace, + Center( + child: AnimatedSmoothIndicator( + activeIndex: model.currentBlogIndex, + count: model.blogsData.length, + effect: JumpingDotEffect( + dotHeight: 8, + dotWidth: 8, + dotColor: + context.colorScheme.secondarySectionColor, + activeDotColor: context.colorScheme.accentColor, + spacing: 4, ), - ].animate(delay: 100.ms, interval: 80.ms).fadeIn(), + ), ), - ), - ], + if (model.departmentClubsData.isNotEmpty) + const SectionText(title: "Departmental Clubs") + .animate( + delay: 250.ms, + ) + .fadeIn( + curve: Curves.easeInOutCubic, + duration: 600.ms, + ), + if (model.departmentClubsData.isNotEmpty) + SizedBox( + height: 120.h, + width: double.infinity, + child: CarouselSlider.builder( + itemCount: model.departmentClubsData.length, + options: model.clubsCarosoulOptions, + itemBuilder: (context, index, realIndex) { + return Padding( + padding: index == 0 + ? const EdgeInsets.only(right: 0).r + : const EdgeInsets.only(left: 8.0).r, + child: DepartmentClubs( + data: model.departmentClubsData[index]), + ); + }, + ), + ).animate(delay: 200.ms).fadeIn( + curve: Curves.easeInOutCubic, duration: 600.ms), + if (model.universalClubsData.isNotEmpty) + const SectionText(title: "Universal Clubs") + .animate( + delay: 250.ms, + ) + .fadeIn( + curve: Curves.easeInOutCubic, + duration: 600.ms, + ), + if (model.universalClubsData.isNotEmpty) + SizedBox( + height: 120.h, + width: double.infinity, + child: CarouselSlider.builder( + itemCount: model.universalClubsData.length, + options: model.clubsCarosoulOptions, + itemBuilder: (context, index, realIndex) { + return Padding( + padding: index == 0 + ? const EdgeInsets.only(right: 0).r + : const EdgeInsets.only(left: 8.0).r, + child: UniversalClubs( + data: model.universalClubsData[index]), + ); + }, + ), + ).animate(delay: 200.ms).fadeIn( + curve: Curves.easeInOutCubic, duration: 600.ms), + 12.verticalSpace, + ].animate(delay: 100.ms, interval: 80.ms).fadeIn(), + ), ), + // ], ), ); }, diff --git a/lib/ui/views/community/community_view_components.dart b/lib/ui/views/community/community_view_components.dart index 6326b48..b07ec02 100644 --- a/lib/ui/views/community/community_view_components.dart +++ b/lib/ui/views/community/community_view_components.dart @@ -200,27 +200,24 @@ class DepartmentClubs extends ViewModelWidget { crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ - Hero( - tag: data.clubShortHand, - child: CachedNetworkImage( - imageUrl: data.clubImage, - height: 80.h, - width: 120.w, - fit: BoxFit.fitHeight, - maxHeightDiskCache: 200, - imageBuilder: (context, imageProvider) { - return Container( - height: 80.h, - width: 120.w, - decoration: BoxDecoration( - image: DecorationImage( - image: imageProvider, - fit: BoxFit.cover, - ), + CachedNetworkImage( + imageUrl: data.clubImage, + height: 80.h, + width: 120.w, + fit: BoxFit.fitHeight, + maxHeightDiskCache: 200, + imageBuilder: (context, imageProvider) { + return Container( + height: 80.h, + width: 120.w, + decoration: BoxDecoration( + image: DecorationImage( + image: imageProvider, + fit: BoxFit.cover, ), - ); - }, - ), + ), + ); + }, ), Container( height: 30.h, @@ -284,27 +281,24 @@ class UniversalClubs extends ViewModelWidget { crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ - Hero( - tag: data.uniclubShortHand, - child: CachedNetworkImage( - imageUrl: data.uniclubImage, - height: 80.h, - width: 120.w, - fit: BoxFit.fitHeight, - maxHeightDiskCache: 200, - imageBuilder: (context, imageProvider) { - return Container( - height: 80.h, - width: 120.w, - decoration: BoxDecoration( - image: DecorationImage( - image: imageProvider, - fit: BoxFit.cover, - ), + CachedNetworkImage( + imageUrl: data.uniclubImage, + height: 80.h, + width: 120.w, + fit: BoxFit.fitHeight, + maxHeightDiskCache: 200, + imageBuilder: (context, imageProvider) { + return Container( + height: 80.h, + width: 120.w, + decoration: BoxDecoration( + image: DecorationImage( + image: imageProvider, + fit: BoxFit.cover, ), - ); - }, - ), + ), + ); + }, ), Container( height: 30.h, diff --git a/lib/ui/views/community/community_view_model.dart b/lib/ui/views/community/community_view_model.dart index 79fe351..73e059e 100644 --- a/lib/ui/views/community/community_view_model.dart +++ b/lib/ui/views/community/community_view_model.dart @@ -121,25 +121,6 @@ class CommunityViewModel extends BaseViewModel { } } - Future fetchAffirmation() async { - try { - List author; - var response = await http.get(Uri.parse('https://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=en')); - - if (response.statusCode != 200) { - return; - } else if (response.statusCode == 200) { - final data = jsonDecode(response.body.toString()); - affirmation = data['quoteText']; - authorName = data['quoteAuthor']; - author = authorName.split(","); - authorName = author[0]; - } - } on Exception catch (e) { - log.e("Error in fetching affirmation: ${e.toString()}"); - } - } - Future updateLikes(String blogId, BuildContext context) async { final currentBlog = localStorageService.read("isLiked_$blogId"); AuthenticationService authenticationService = @@ -171,12 +152,11 @@ class CommunityViewModel extends BaseViewModel { Future init(context) async { try { _analyticsService.logScreen(screenName: 'CommunityView Screen Opened'); - await runBusyFuture(getBlogData()); - await getDepartmentClubsData(); - notifyListeners(); - await getUniversalClubsData(); - notifyListeners(); - await fetchAffirmation(); + Future.wait([ + getBlogData(), + getDepartmentClubsData(), + getUniversalClubsData(), + ]); notifyListeners(); } catch (e) { log.e(e.toString()); diff --git a/lib/ui/views/community/detailed_blogs/detailed_blogs_view_model.dart b/lib/ui/views/community/detailed_blogs/detailed_blogs_view_model.dart index 149edf6..2fcdf90 100644 --- a/lib/ui/views/community/detailed_blogs/detailed_blogs_view_model.dart +++ b/lib/ui/views/community/detailed_blogs/detailed_blogs_view_model.dart @@ -10,7 +10,7 @@ class DettailedBlogPageModel extends BaseViewModel { eventName: "Detailed_Blog_View", value: "${blogData.title} Blog Viewed : ${blogData.documentId}"); - SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []); + // SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []); } void shareBlog(BuildContext context, CommunityBlogsData blogData) async { @@ -26,7 +26,7 @@ class DettailedBlogPageModel extends BaseViewModel { } void disposeModel() { - SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, - overlays: SystemUiOverlay.values); + // SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, + // overlays: SystemUiOverlay.values); } } diff --git a/lib/ui/views/community/uni_clubs/uni_clubs_view_components.dart b/lib/ui/views/community/uni_clubs/uni_clubs_view_components.dart index 3b21247..61c899b 100644 --- a/lib/ui/views/community/uni_clubs/uni_clubs_view_components.dart +++ b/lib/ui/views/community/uni_clubs/uni_clubs_view_components.dart @@ -114,38 +114,8 @@ class UniversalClubsDatas extends ViewModelWidget { ), ), ), - clubFest.isEmpty - ? Container() - : Padding( - padding: const EdgeInsets.only(left: 16.0).r, - child: Text( - "Fests | ${clubFest.length}", - style: fontTheme.body( - context, - fontWeight: FontWeight.w500, - ), - ), - ), - clubFest.isEmpty - ? Container() - : SizedBox( - height: 230.h, - width: double.infinity, - child: ListView.builder( - physics: const BouncingScrollPhysics(), - scrollDirection: Axis.horizontal, - itemCount: clubFest.length, - shrinkWrap: true, - itemBuilder: (context, index) { - return FestCard( - clubFest: clubFest, - fontTheme: fontTheme, - index: index, - ); - }, - ), - ), - 15.verticalSpace, + 12.verticalSpace, + // TODO: Add button to join the club ])); } } diff --git a/lib/ui/views/home/home_view_model.dart b/lib/ui/views/home/home_view_model.dart index d864646..f976de8 100644 --- a/lib/ui/views/home/home_view_model.dart +++ b/lib/ui/views/home/home_view_model.dart @@ -43,6 +43,29 @@ class HomeViewModel extends BaseViewModel { List get celebrationData => _celebrationData; int get activeIndex => _activeIndex; + List quickLinksList = [ + QuickLinksModel( + imageUrl: "assets/images/android_splash_logo.png", + title: "BVCOENM", + url: 'https://www.bvcoenm.edu.in/', + ), + QuickLinksModel( + imageUrl: "assets/images/home/quick_links/abhiyaan.png", + title: "Abhiyaan", + url: 'https://abhiyaan.tech/', + ), + QuickLinksModel( + imageUrl: "assets/images/home/quick_links/tdc_logo.png", + title: "TDC", + url: 'https://abhiyaan.tech/', + ), + QuickLinksModel( + imageUrl: "assets/images/home/quick_links/cesa.png", + title: "CESA", + url: 'https://www.clubcesa.tech/', + ), + ]; + bool toggleCelebrationShown() { try { isCelebrationShown = true; @@ -136,29 +159,6 @@ class HomeViewModel extends BaseViewModel { } } - List quickLinksList = [ - QuickLinksModel( - imageUrl: "assets/images/android_splash_logo.png", - title: "BVCOENM", - url: 'https://www.bvcoenm.edu.in/', - ), - QuickLinksModel( - imageUrl: "assets/images/home/quick_links/abhiyaan.png", - title: "Abhiyaan", - url: 'https://abhiyaan.tech/', - ), - QuickLinksModel( - imageUrl: "assets/images/home/quick_links/tdc_logo.png", - title: "TDC", - url: 'https://abhiyaan.tech/', - ), - QuickLinksModel( - imageUrl: "assets/images/home/quick_links/cesa.png", - title: "CESA", - url: 'https://www.clubcesa.tech/', - ), - ]; - Future afterInit(context) async { try { await getCelebrationData() diff --git a/pubspec.yaml b/pubspec.yaml index 4ab74c8..6d53a9e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,8 +1,8 @@ name: abhiyaan description: A new Flutter project. publish_to: "none" -version: 1.1.5+10 -# Major.Minor.Patch+Build +version: 1.1.6+11 +# Major.Minor.Patch+Build # Major - Major changes like UI/UX changes, new features, etc. Those changes that are not backward compatible. # Minor - Minor changes like bug fixes, performance improvements, etc. Those changes that are backward compatible. # Patch - Patch changes like small bug fixes, small improvements, etc. Those changes that are backward compatible.