Commit 7be2176f802a6adcec03221e1ed091d023ac79dc
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( |