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. 24
      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 {
showingAnswerSequence(show: true);
answerAnimationController.reverse();
await Future.delayed(Duration(seconds: 1));
imageAnimationController.forward();
await playQuestionAudio();
imageAnimationController.reverse();

24
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/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_delayed.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_up_fade.dart';
@ -94,16 +95,19 @@ class _QuestionScreenState extends State<QuestionScreen> with TickerProviderStat
children: [
Spacer(),
BlocBuilder<QuestionBloc, QuestionState>(
builder: (context, state) => FadeAnimController(
key: Key('${state.currentQuestion?.image}'),
controller: context.read<QuestionBloc>().imageAnimationController,
child: AnswerPictureBox(
selected: false,
showIndex: false,
correctAnswer: 0,
index: 0,
image: state.currentQuestion?.image ?? '',
autostart: Autostart.once,
builder: (context, state) => FadeAnimDelayed(
duration: Duration(seconds: 1),
child: FadeAnimController(
key: Key('${state.currentQuestion?.image}'),
controller: context.read<QuestionBloc>().imageAnimationController,
child: AnswerPictureBox(
selected: false,
showIndex: false,
correctAnswer: 0,
index: 0,
image: state.currentQuestion?.image ?? '',
autostart: Autostart.once,
),
),
),
),

Loading…
Cancel
Save