Browse Source

fix: show image question with delayed

pull/55/head
AmirrezaChegini 1 week ago
parent
commit
6f7a917632
  1. 59
      lib/core/widgets/animations/fade_anim_delayed.dart
  2. 1
      lib/features/question/presentation/bloc/question_bloc.dart
  3. 6
      lib/features/question/presentation/ui/screens/question_screen.dart

59
lib/core/widgets/animations/fade_anim_delayed.dart

@ -0,0 +1,59 @@
import 'package:flutter/material.dart';
class FadeAnimDelayed extends StatefulWidget {
const FadeAnimDelayed({
super.key,
required this.child,
required this.duration,
});
final Widget child;
final Duration duration;
@override
State<FadeAnimDelayed> createState() => _FadeAnimDelayedState();
}
class _FadeAnimDelayedState extends State<FadeAnimDelayed>
with SingleTickerProviderStateMixin {
late AnimationController _controller;
late Animation<double> _animation;
@override
void initState() {
super.initState();
_controller = AnimationController(
vsync: this,
duration: Duration(milliseconds: 500),
reverseDuration: Duration(seconds: 500),
);
_animation = Tween<double>(
begin: 0,
end: 1,
).animate(CurvedAnimation(parent: _controller, curve: Curves.linear));
startAnim();
}
Future<void> startAnim() async {
await Future.delayed(widget.duration, () {
_controller.forward();
});
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return AnimatedBuilder(
animation: _controller,
child: widget.child,
builder: (context, child) =>
FadeTransition(opacity: _animation, child: child),
);
}
}

1
lib/features/question/presentation/bloc/question_bloc.dart

@ -291,6 +291,7 @@ class QuestionBloc extends Bloc<QuestionEvent, QuestionState> {
} else { } else {
showingAnswerSequence(show: true); showingAnswerSequence(show: true);
answerAnimationController.reverse(); answerAnimationController.reverse();
await Future.delayed(Duration(seconds: 1));
imageAnimationController.forward(); imageAnimationController.forward();
await playQuestionAudio(); await playQuestionAudio();
imageAnimationController.reverse(); imageAnimationController.reverse();

6
lib/features/question/presentation/ui/screens/question_screen.dart

@ -13,6 +13,7 @@ import 'package:hadi_hoda_flutter/core/utils/screen_size.dart';
import 'package:hadi_hoda_flutter/core/utils/set_platform_size.dart'; import 'package:hadi_hoda_flutter/core/utils/set_platform_size.dart';
import 'package:hadi_hoda_flutter/core/widgets/animations/fade_anim.dart'; import 'package:hadi_hoda_flutter/core/widgets/animations/fade_anim.dart';
import 'package:hadi_hoda_flutter/core/widgets/animations/fade_anim_controller.dart'; import 'package:hadi_hoda_flutter/core/widgets/animations/fade_anim_controller.dart';
import 'package:hadi_hoda_flutter/core/widgets/animations/fade_anim_delayed.dart';
import 'package:hadi_hoda_flutter/core/widgets/animations/globe_animation.dart'; import 'package:hadi_hoda_flutter/core/widgets/animations/globe_animation.dart';
import 'package:hadi_hoda_flutter/core/widgets/animations/slide_anim.dart'; import 'package:hadi_hoda_flutter/core/widgets/animations/slide_anim.dart';
import 'package:hadi_hoda_flutter/core/widgets/animations/slide_up_fade.dart'; import 'package:hadi_hoda_flutter/core/widgets/animations/slide_up_fade.dart';
@ -94,7 +95,9 @@ class _QuestionScreenState extends State<QuestionScreen> with TickerProviderStat
children: [ children: [
Spacer(), Spacer(),
BlocBuilder<QuestionBloc, QuestionState>( BlocBuilder<QuestionBloc, QuestionState>(
builder: (context, state) => FadeAnimController(
builder: (context, state) => FadeAnimDelayed(
duration: Duration(seconds: 1),
child: FadeAnimController(
key: Key('${state.currentQuestion?.image}'), key: Key('${state.currentQuestion?.image}'),
controller: context.read<QuestionBloc>().imageAnimationController, controller: context.read<QuestionBloc>().imageAnimationController,
child: AnswerPictureBox( child: AnswerPictureBox(
@ -107,6 +110,7 @@ class _QuestionScreenState extends State<QuestionScreen> with TickerProviderStat
), ),
), ),
), ),
),
Spacer(), Spacer(),
], ],
); );

Loading…
Cancel
Save