new dot appearance schema

pull/35/head
Lucas Delanier 2 years ago
parent be51ffa21f
commit cbf6ef9ab2

@ -1,9 +1,15 @@
import 'dart:async';
import 'package:another_flushbar/flushbar.dart';
import 'package:circular_reveal_animation/circular_reveal_animation.dart'; import 'package:circular_reveal_animation/circular_reveal_animation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.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:ionicons/ionicons.dart';
import 'package:justmusic/main.dart'; import 'package:justmusic/main.dart';
import 'package:lottie/lottie.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';
@ -22,12 +28,17 @@ class _FeedScreenState extends State<FeedScreen> with SingleTickerProviderStateM
late AnimationController animationController; late AnimationController animationController;
late Animation<double> animation; late Animation<double> animation;
late List<Post> friendFeed; late List<Post> friendFeed;
Timer? timer;
late List<Post> discoveryFeed; late List<Post> discoveryFeed;
late List<Post> displayFeed; late List<Post> displayFeed;
final DateTime midnight = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day + 1);
bool isDismissed = true;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
MyApp.postViewModel.getPostsFriends(); MyApp.postViewModel.getPostsFriends();
friendFeed = MyApp.postViewModel.postsFriends; friendFeed = MyApp.postViewModel.postsFriends;
MyApp.postViewModel.getBestPosts(); MyApp.postViewModel.getBestPosts();
@ -44,6 +55,92 @@ class _FeedScreenState extends State<FeedScreen> with SingleTickerProviderStateM
animationController.forward(); animationController.forward();
} }
Future<void> showCapsuleDot() async {
bool res = await MyApp.postViewModel.getAvailable();
if (isDismissed) {
if (res) {
setState(() {
isDismissed = !isDismissed;
});
Flushbar(
maxWidth: 210,
animationDuration: Duration(seconds: 1),
forwardAnimationCurve: Curves.easeOutCirc,
margin: EdgeInsets.fromLTRB(0, 0, 0, 0),
icon: Icon(
Ionicons.sparkles,
color: Colors.white,
size: 18,
),
padding: EdgeInsets.fromLTRB(8, 8, 8, 8),
messageText: Align(
alignment: Alignment.centerLeft,
child: Text(
"Capsule disponible",
style: GoogleFonts.plusJakartaSans(color: Colors.grey, fontSize: 15),
),
),
flushbarStyle: FlushbarStyle.FLOATING,
flushbarPosition: FlushbarPosition.BOTTOM,
textDirection: Directionality.of(context),
borderRadius: BorderRadius.circular(1000),
borderWidth: 1,
isDismissible: false,
borderColor: Colors.white.withOpacity(0.04),
duration: const Duration(minutes: 100),
leftBarIndicatorColor: Colors.transparent,
positionOffset: 20,
onTap: (_) {
Navigator.pop(context);
Navigator.pushNamed(context, '/post');
},
).show(context).then((value) {
isDismissed = !isDismissed;
});
} else {
setState(() {
isDismissed = !isDismissed;
});
Flushbar(
maxWidth: 155,
animationDuration: Duration(seconds: 1),
isDismissible: false,
forwardAnimationCurve: Curves.easeOutCirc,
margin: EdgeInsets.fromLTRB(0, 0, 0, 0),
icon: Lottie.asset(
'assets/animations/LottieHourGlass.json',
width: 26,
fit: BoxFit.fill,
),
padding: EdgeInsets.fromLTRB(8, 8, 8, 8),
messageText: Align(
alignment: Alignment.centerLeft,
child: CountdownTimer(
endTime: midnight.millisecondsSinceEpoch - 2 * 60 * 60 * 1000,
textStyle: GoogleFonts.plusJakartaSans(color: Colors.grey, fontSize: 15),
),
),
flushbarStyle: FlushbarStyle.FLOATING,
flushbarPosition: FlushbarPosition.BOTTOM,
textDirection: Directionality.of(context),
borderRadius: BorderRadius.circular(1000),
borderWidth: 1,
borderColor: Colors.white.withOpacity(0.04),
duration: const Duration(minutes: 100),
leftBarIndicatorColor: Colors.transparent,
positionOffset: 20,
onTap: (_) {},
).show(context).then((value) {
{
setState(() {
isDismissed = !isDismissed;
});
}
});
}
}
}
Future _refresh() async { Future _refresh() async {
print("refresh"); print("refresh");
discoveryFeed = await MyApp.postViewModel.getBestPosts(); discoveryFeed = await MyApp.postViewModel.getBestPosts();
@ -92,6 +189,7 @@ class _FeedScreenState extends State<FeedScreen> with SingleTickerProviderStateM
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
showCapsuleDot();
return Scaffold( return Scaffold(
resizeToAvoidBottomInset: true, resizeToAvoidBottomInset: true,
backgroundColor: bgColor, backgroundColor: bgColor,

Loading…
Cancel
Save