Browse Source

fix: scroll text title

pull/50/head
AmirrezaChegini 5 days ago
parent
commit
fd8a685d9d
  1. 4
      lib/features/language/presentation/ui/language_page.dart
  2. 17
      lib/features/question/presentation/bloc/question_bloc.dart
  3. 14
      lib/features/question/presentation/ui/screens/question_screen.dart

4
lib/features/language/presentation/ui/language_page.dart

@ -43,8 +43,8 @@ class LanguagePage extends StatelessWidget {
), ),
child: Padding( child: Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
left: setSize(context: context, mobile: 60, tablet: 0.3.w) ?? 0,
right: setSize(context: context, mobile: 60, tablet: 0.3.w) ?? 0,
left: setSize(context: context, mobile: 50, tablet: 0.3.w) ?? 0,
right: setSize(context: context, mobile: 50, tablet: 0.3.w) ?? 0,
bottom: MySpaces.s40, bottom: MySpaces.s40,
top: 100, top: 100,
), ),

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

@ -48,6 +48,7 @@ class QuestionBloc extends Bloc<QuestionEvent, QuestionState> {
_backgroundAudioService.dispose(); _backgroundAudioService.dispose();
answerAnimationController.dispose(); answerAnimationController.dispose();
imageAnimationController.dispose(); imageAnimationController.dispose();
titleController.dispose();
return super.close(); return super.close();
} }
@ -79,6 +80,7 @@ class QuestionBloc extends Bloc<QuestionEvent, QuestionState> {
final AudioService _effectAudioService; final AudioService _effectAudioService;
late final AnimationController answerAnimationController; late final AnimationController answerAnimationController;
late final AnimationController imageAnimationController; late final AnimationController imageAnimationController;
final ScrollController titleController = ScrollController();
/// ------------Functions------------ /// ------------Functions------------
void registerShowCase() { void registerShowCase() {
@ -118,6 +120,15 @@ class QuestionBloc extends Bloc<QuestionEvent, QuestionState> {
} }
} }
void startScrollTitle({Duration? audioDuration}) {
if (audioDuration == null || audioDuration == Duration.zero) return;
titleController.animateTo(
titleController.position.maxScrollExtent,
duration: audioDuration,
curve: Curves.linear
);
}
void showHadith({required BuildContext context}) { void showHadith({required BuildContext context}) {
showHadithDialog( showHadithDialog(
context: context, context: context,
@ -165,7 +176,11 @@ class QuestionBloc extends Bloc<QuestionEvent, QuestionState> {
} }
Future<void> playQuestionAudio() async { Future<void> playQuestionAudio() async {
await _mainAudioService.setAudio(filePath: state.currentQuestion?.audio);
if(titleController.hasClients){
titleController.jumpTo(0);
}
Duration? duration = await _mainAudioService.setAudio(filePath: state.currentQuestion?.audio);
startScrollTitle(audioDuration: duration);
await _mainAudioService.play(); await _mainAudioService.play();
} }

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

@ -1,4 +1,3 @@
import 'package:auto_size_text/auto_size_text.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:hadi_hoda_flutter/common_ui/resources/my_assets.dart'; import 'package:hadi_hoda_flutter/common_ui/resources/my_assets.dart';
@ -135,12 +134,14 @@ class _QuestionScreenState extends State<QuestionScreen> with TickerProviderStat
previous.currentQuestion?.id != current.currentQuestion?.id, previous.currentQuestion?.id != current.currentQuestion?.id,
builder: (context, state) => builder: (context, state) =>
FadeAnim( FadeAnim(
child: AutoSizeText(
child: SizedBox(
height: 100,
child: ListView(
controller: context.read<QuestionBloc>().titleController,
children: [
Text(
state.currentQuestion?.title ?? '', state.currentQuestion?.title ?? '',
textAlign: TextAlign.center, textAlign: TextAlign.center,
maxLines: 4,
maxFontSize: 20,
minFontSize: 16,
style: MYTextStyle.titr1.copyWith( style: MYTextStyle.titr1.copyWith(
shadows: [ shadows: [
BoxShadow( BoxShadow(
@ -150,6 +151,9 @@ class _QuestionScreenState extends State<QuestionScreen> with TickerProviderStat
], ],
), ),
), ),
],
),
),
), ),
); );
} }

Loading…
Cancel
Save