From 7be2176f802a6adcec03221e1ed091d023ac79dc Mon Sep 17 00:00:00 2001 From: wuqifeng <540416539@qq.com> Date: Sat, 27 Jul 2024 12:00:37 +0800 Subject: [PATCH] feat:课程学习和游戏专区点击防抖 --- lib/pages/home/view.dart | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------- 1 file changed, 64 insertions(+), 41 deletions(-) diff --git a/lib/pages/home/view.dart b/lib/pages/home/view.dart index c56e788..1ecf2ae 100644 --- a/lib/pages/home/view.dart +++ b/lib/pages/home/view.dart @@ -19,6 +19,7 @@ import 'package:wow_english/utils/audio_player_util.dart'; import '../../common/core/user_util.dart'; import '../../common/dialogs/show_dialog.dart'; +import '../../common/utils/click_with_music_controller.dart'; import 'bloc.dart'; import 'event.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -57,6 +58,7 @@ class _HomePageView extends StatelessWidget { Widget _homeView() => BlocBuilder(builder: (context, state) { final bloc = BlocProvider.of(context); + final clickController = ClickWithMusicController.instance; return Scaffold( body: Container( color: Colors.white, @@ -77,17 +79,19 @@ class _HomePageView extends StatelessWidget { child: GestureDetector( onTap: () { _checkPermission(() async { - await AudioPlayerUtil.getInstance() - .playAudio(AudioPlayerUtilType.classTime); - pushNamed(AppRouteName.courseUnit) - .then((value) => { - if (value != null) - { - bloc.exchangeResult = - value['exchange'], - bloc.add(ExchangeSuccessEvent()) - } - }); + clickController.playMusicAndPerformAction( + context, AudioPlayerUtilType.classTime, + () async { + pushNamed(AppRouteName.courseUnit) + .then((value) => { + if (value != null) + { + bloc.exchangeResult = + value['exchange'], + bloc.add(ExchangeSuccessEvent()) + } + }); + }); }, bloc); }, child: Column( @@ -116,28 +120,45 @@ class _HomePageView extends StatelessWidget { builder: (context, userState) { return GestureDetector( onTap: () { - _checkPermission(() async { - await AudioPlayerUtil.getInstance().pause(); - if (Platform.isIOS) { - await LimitingDirectionCsx.setScreenDirection(DeviceDirectionMask.Portrait); - } else { - await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]); - } - Navigator.of(context).pushNamed( - AppRouteName.webView, - arguments: { - 'urlStr': AppConsts.xiaoeShopUrl, - 'webViewTitle': 'Wow精选' - }).then((value) async => { - if (Platform.isIOS) { - await LimitingDirectionCsx.setScreenDirection(DeviceDirectionMask.Landscape), - } else { - await SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]), + _checkPermission(() async { + await AudioPlayerUtil.getInstance().pause(); + if (Platform.isIOS) { + await LimitingDirectionCsx + .setScreenDirection( + DeviceDirectionMask.Portrait); + } else { + await SystemChrome + .setPreferredOrientations([ + DeviceOrientation.portraitUp, + DeviceOrientation.portraitDown + ]); + } + Navigator.of(context).pushNamed( + AppRouteName.webView, + arguments: { + 'urlStr': AppConsts.xiaoeShopUrl, + 'webViewTitle': 'Wow精选' + }).then((value) async => { + if (Platform.isIOS) + { + await LimitingDirectionCsx + .setScreenDirection( + DeviceDirectionMask + .Landscape), + } + else + { + await SystemChrome + .setPreferredOrientations([ + DeviceOrientation.landscapeLeft, + DeviceOrientation.landscapeRight + ]), }, - await AudioPlayerUtil.getInstance().playAudio( - AudioPlayerUtilType.touch), - }); - }, bloc); + await AudioPlayerUtil.getInstance() + .playAudio( + AudioPlayerUtilType.touch), + }); + }, bloc); }, child: Offstage( offstage: AppConfigHelper.shouldHidePay() || @@ -151,15 +172,17 @@ class _HomePageView extends StatelessWidget { return GestureDetector( onTap: () { _checkPermission(() async { - await AudioPlayerUtil.getInstance() - .playAudio( - AudioPlayerUtilType.gameTime); - pushNamed(AppRouteName.games) - .then((value) => { - AudioPlayerUtil.getInstance() - .playAudio(AudioPlayerUtilType - .touch), - }); + clickController.playMusicAndPerformAction( + context, AudioPlayerUtilType.gameTime, + () async { + pushNamed(AppRouteName.games) + .then((value) => { + AudioPlayerUtil.getInstance() + .playAudio( + AudioPlayerUtilType + .touch), + }); + }); }, bloc); }, child: Column( -- libgit2 0.22.2