Commit 7be2176f802a6adcec03221e1ed091d023ac79dc

Authored by 吴启风
1 parent 0493c104

feat:课程学习和游戏专区点击防抖

Showing 1 changed file with 64 additions and 41 deletions
lib/pages/home/view.dart
@@ -19,6 +19,7 @@ import 'package:wow_english/utils/audio_player_util.dart'; @@ -19,6 +19,7 @@ import 'package:wow_english/utils/audio_player_util.dart';
19 19
20 import '../../common/core/user_util.dart'; 20 import '../../common/core/user_util.dart';
21 import '../../common/dialogs/show_dialog.dart'; 21 import '../../common/dialogs/show_dialog.dart';
  22 +import '../../common/utils/click_with_music_controller.dart';
22 import 'bloc.dart'; 23 import 'bloc.dart';
23 import 'event.dart'; 24 import 'event.dart';
24 import 'package:flutter_screenutil/flutter_screenutil.dart'; 25 import 'package:flutter_screenutil/flutter_screenutil.dart';
@@ -57,6 +58,7 @@ class _HomePageView extends StatelessWidget { @@ -57,6 +58,7 @@ class _HomePageView extends StatelessWidget {
57 Widget _homeView() => 58 Widget _homeView() =>
58 BlocBuilder<HomeBloc, HomeState>(builder: (context, state) { 59 BlocBuilder<HomeBloc, HomeState>(builder: (context, state) {
59 final bloc = BlocProvider.of<HomeBloc>(context); 60 final bloc = BlocProvider.of<HomeBloc>(context);
  61 + final clickController = ClickWithMusicController.instance;
60 return Scaffold( 62 return Scaffold(
61 body: Container( 63 body: Container(
62 color: Colors.white, 64 color: Colors.white,
@@ -77,17 +79,19 @@ class _HomePageView extends StatelessWidget { @@ -77,17 +79,19 @@ class _HomePageView extends StatelessWidget {
77 child: GestureDetector( 79 child: GestureDetector(
78 onTap: () { 80 onTap: () {
79 _checkPermission(() async { 81 _checkPermission(() async {
80 - await AudioPlayerUtil.getInstance()  
81 - .playAudio(AudioPlayerUtilType.classTime);  
82 - pushNamed(AppRouteName.courseUnit)  
83 - .then((value) => {  
84 - if (value != null)  
85 - {  
86 - bloc.exchangeResult =  
87 - value['exchange'],  
88 - bloc.add(ExchangeSuccessEvent())  
89 - }  
90 - }); 82 + clickController.playMusicAndPerformAction(
  83 + context, AudioPlayerUtilType.classTime,
  84 + () async {
  85 + pushNamed(AppRouteName.courseUnit)
  86 + .then((value) => {
  87 + if (value != null)
  88 + {
  89 + bloc.exchangeResult =
  90 + value['exchange'],
  91 + bloc.add(ExchangeSuccessEvent())
  92 + }
  93 + });
  94 + });
91 }, bloc); 95 }, bloc);
92 }, 96 },
93 child: Column( 97 child: Column(
@@ -116,28 +120,45 @@ class _HomePageView extends StatelessWidget { @@ -116,28 +120,45 @@ class _HomePageView extends StatelessWidget {
116 builder: (context, userState) { 120 builder: (context, userState) {
117 return GestureDetector( 121 return GestureDetector(
118 onTap: () { 122 onTap: () {
119 - _checkPermission(() async {  
120 - await AudioPlayerUtil.getInstance().pause();  
121 - if (Platform.isIOS) {  
122 - await LimitingDirectionCsx.setScreenDirection(DeviceDirectionMask.Portrait);  
123 - } else {  
124 - await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);  
125 - }  
126 - Navigator.of(context).pushNamed(  
127 - AppRouteName.webView,  
128 - arguments: {  
129 - 'urlStr': AppConsts.xiaoeShopUrl,  
130 - 'webViewTitle': 'Wow精选'  
131 - }).then((value) async => {  
132 - if (Platform.isIOS) {  
133 - await LimitingDirectionCsx.setScreenDirection(DeviceDirectionMask.Landscape),  
134 - } else {  
135 - await SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]), 123 + _checkPermission(() async {
  124 + await AudioPlayerUtil.getInstance().pause();
  125 + if (Platform.isIOS) {
  126 + await LimitingDirectionCsx
  127 + .setScreenDirection(
  128 + DeviceDirectionMask.Portrait);
  129 + } else {
  130 + await SystemChrome
  131 + .setPreferredOrientations([
  132 + DeviceOrientation.portraitUp,
  133 + DeviceOrientation.portraitDown
  134 + ]);
  135 + }
  136 + Navigator.of(context).pushNamed(
  137 + AppRouteName.webView,
  138 + arguments: {
  139 + 'urlStr': AppConsts.xiaoeShopUrl,
  140 + 'webViewTitle': 'Wow精选'
  141 + }).then((value) async => {
  142 + if (Platform.isIOS)
  143 + {
  144 + await LimitingDirectionCsx
  145 + .setScreenDirection(
  146 + DeviceDirectionMask
  147 + .Landscape),
  148 + }
  149 + else
  150 + {
  151 + await SystemChrome
  152 + .setPreferredOrientations([
  153 + DeviceOrientation.landscapeLeft,
  154 + DeviceOrientation.landscapeRight
  155 + ]),
136 }, 156 },
137 - await AudioPlayerUtil.getInstance().playAudio(  
138 - AudioPlayerUtilType.touch),  
139 - });  
140 - }, bloc); 157 + await AudioPlayerUtil.getInstance()
  158 + .playAudio(
  159 + AudioPlayerUtilType.touch),
  160 + });
  161 + }, bloc);
141 }, 162 },
142 child: Offstage( 163 child: Offstage(
143 offstage: AppConfigHelper.shouldHidePay() || 164 offstage: AppConfigHelper.shouldHidePay() ||
@@ -151,15 +172,17 @@ class _HomePageView extends StatelessWidget { @@ -151,15 +172,17 @@ class _HomePageView extends StatelessWidget {
151 return GestureDetector( 172 return GestureDetector(
152 onTap: () { 173 onTap: () {
153 _checkPermission(() async { 174 _checkPermission(() async {
154 - await AudioPlayerUtil.getInstance()  
155 - .playAudio(  
156 - AudioPlayerUtilType.gameTime);  
157 - pushNamed(AppRouteName.games)  
158 - .then((value) => {  
159 - AudioPlayerUtil.getInstance()  
160 - .playAudio(AudioPlayerUtilType  
161 - .touch),  
162 - }); 175 + clickController.playMusicAndPerformAction(
  176 + context, AudioPlayerUtilType.gameTime,
  177 + () async {
  178 + pushNamed(AppRouteName.games)
  179 + .then((value) => {
  180 + AudioPlayerUtil.getInstance()
  181 + .playAudio(
  182 + AudioPlayerUtilType
  183 + .touch),
  184 + });
  185 + });
163 }, bloc); 186 }, bloc);
164 }, 187 },
165 child: Column( 188 child: Column(