change refresh feed
continuous-integration/drone/push Build is passing Details

pull/42/head^2
Lucas Delanier 2 years ago
parent cc227a97a3
commit 2ed4b1e515

@ -28,10 +28,8 @@ class _TopNavBarComponentState extends State<TopNavBarComponent> with TickerProv
final DateTime midnight = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day + 1); final DateTime midnight = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day + 1);
void actionSurBouton() async { void actionSurBouton(bool choice) async {
widget.callback(choice); widget.callback(choice);
await MyApp.postViewModel.getBestPosts();
await MyApp.postViewModel.getPostsFriends();
} }
@override @override
@ -190,7 +188,7 @@ class _TopNavBarComponentState extends State<TopNavBarComponent> with TickerProv
if (!choice) { if (!choice) {
setState(() { setState(() {
choice = !choice; choice = !choice;
actionSurBouton(); actionSurBouton(false);
}); });
} }
}, },
@ -223,7 +221,7 @@ class _TopNavBarComponentState extends State<TopNavBarComponent> with TickerProv
if (choice) { if (choice) {
setState(() { setState(() {
choice = !choice; choice = !choice;
actionSurBouton(); actionSurBouton(true);
}); });
} }
}, },

@ -1,10 +1,13 @@
import 'dart:async'; import 'dart:async';
import 'package:circular_reveal_animation/circular_reveal_animation.dart'; import 'package:circular_reveal_animation/circular_reveal_animation.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:justmusic/main.dart'; import 'package:justmusic/main.dart';
import 'package:justmusic/main.dart';
import 'package:tuple/tuple.dart';
import '../components/post_component.dart'; import '../components/post_component.dart';
import '../components/top_nav_bar_component.dart'; import '../components/top_nav_bar_component.dart';
import '../model/Post.dart'; import '../model/Post.dart';
@ -27,16 +30,13 @@ class _FeedScreenState extends State<FeedScreen> with SingleTickerProviderStateM
late List<Post> discoveryFeed; late List<Post> discoveryFeed;
late List<Post> displayFeed; late List<Post> displayFeed;
bool isDismissed = true; bool isDismissed = true;
bool choiceFeed = false;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
MyApp.postViewModel.getPostsFriends();
friendFeed = MyApp.postViewModel.postsFriends; friendFeed = MyApp.postViewModel.postsFriends;
MyApp.postViewModel.getBestPosts();
discoveryFeed = MyApp.postViewModel.bestPosts; discoveryFeed = MyApp.postViewModel.bestPosts;
displayFeed = [];
animationController = AnimationController( animationController = AnimationController(
vsync: this, vsync: this,
duration: Duration(milliseconds: 400), duration: Duration(milliseconds: 400),
@ -49,11 +49,13 @@ class _FeedScreenState extends State<FeedScreen> with SingleTickerProviderStateM
} }
Future _refresh() async { Future _refresh() async {
print("refresh"); if (choiceFeed) {
discoveryFeed = await MyApp.postViewModel.getBestPosts(); await MyApp.postViewModel.getBestPosts();
setState(() { setState(() {});
displayFeed = discoveryFeed.reversed.toList(); } else {
}); await MyApp.postViewModel.getPostsFriends();
setState(() {});
}
} }
void changeFeed(bool choice) { void changeFeed(bool choice) {
@ -63,14 +65,14 @@ class _FeedScreenState extends State<FeedScreen> with SingleTickerProviderStateM
animationController.reset(); animationController.reset();
displayFeed = MyApp.postViewModel.postsFriends.reversed.toList(); displayFeed = MyApp.postViewModel.postsFriends.reversed.toList();
animationController.forward(); animationController.forward();
print(displayFeed.length); choiceFeed = false;
}); });
} else { } else {
setState(() { setState(() {
animationController.reset(); animationController.reset();
displayFeed = MyApp.postViewModel.bestPosts.reversed.toList(); displayFeed = MyApp.postViewModel.bestPosts.reversed.toList();
print(displayFeed.length);
animationController.forward(); animationController.forward();
choiceFeed = true;
}); });
} }
} }
@ -94,8 +96,21 @@ class _FeedScreenState extends State<FeedScreen> with SingleTickerProviderStateM
); );
} }
_fetchData() async {
friendFeed = await MyApp.postViewModel.getPostsFriends();
discoveryFeed = await MyApp.postViewModel.getBestPosts();
return Tuple2(friendFeed, displayFeed);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (choiceFeed) {
displayFeed = MyApp.postViewModel.postsFriends.reversed.toList();
} else {
displayFeed = MyApp.postViewModel.bestPosts.reversed.toList();
}
_fetchData();
return Scaffold( return Scaffold(
resizeToAvoidBottomInset: true, resizeToAvoidBottomInset: true,
backgroundColor: bgColor, backgroundColor: bgColor,
@ -148,35 +163,56 @@ class _FeedScreenState extends State<FeedScreen> with SingleTickerProviderStateM
) )
: Container( : Container(
width: double.infinity, width: double.infinity,
height: double.infinity,
child: Stack( child: Stack(
fit: StackFit.expand, fit: StackFit.expand,
children: [ children: [
Align( Expanded(
alignment: Alignment.topCenter, child: Align(
child: CircularRevealAnimation( alignment: Alignment.topCenter,
animation: animation, child: CircularRevealAnimation(
centerOffset: Offset(30.w, -100), animation: animation,
child: Container( centerOffset: Offset(30.w, -100),
constraints: BoxConstraints(maxWidth: 600), child: Expanded(
padding: EdgeInsets.fromLTRB(defaultPadding, 100.h, defaultPadding, 0), child: Container(
child: RefreshIndicator( height: double.infinity,
displacement: 20, constraints: BoxConstraints(maxWidth: 600),
triggerMode: RefreshIndicatorTriggerMode.onEdge, padding: EdgeInsets.fromLTRB(defaultPadding, 100.h, defaultPadding, 0),
onRefresh: _refresh, child: Expanded(
child: ListView.builder( child: FutureBuilder(
physics: const BouncingScrollPhysics(decelerationRate: ScrollDecelerationRate.fast), future: _fetchData(),
clipBehavior: Clip.none, builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
shrinkWrap: true, if (snapshot.hasData) {
itemCount: displayFeed.length, return RefreshIndicator(
itemBuilder: (BuildContext context, int index) { displacement: 20,
return Padding( triggerMode: RefreshIndicatorTriggerMode.onEdge,
padding: const EdgeInsets.only(bottom: 40), onRefresh: _refresh,
child: child: Expanded(
PostComponent(callback: openDetailPost, post: displayFeed[index], index: index), child: ListView.builder(
); physics: const AlwaysScrollableScrollPhysics(),
}, clipBehavior: Clip.none,
), shrinkWrap: true,
)), itemCount: displayFeed.length,
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: const EdgeInsets.only(bottom: 40),
child: PostComponent(
callback: openDetailPost, post: displayFeed[index], index: index),
);
},
),
),
);
} else {
return Center(
child: CupertinoActivityIndicator(),
);
}
},
),
)),
),
),
), ),
), ),
Align( Align(

Loading…
Cancel
Save