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 19  
20 20 import '../../common/core/user_util.dart';
21 21 import '../../common/dialogs/show_dialog.dart';
  22 +import '../../common/utils/click_with_music_controller.dart';
22 23 import 'bloc.dart';
23 24 import 'event.dart';
24 25 import 'package:flutter_screenutil/flutter_screenutil.dart';
... ... @@ -57,6 +58,7 @@ class _HomePageView extends StatelessWidget {
57 58 Widget _homeView() =>
58 59 BlocBuilder<HomeBloc, HomeState>(builder: (context, state) {
59 60 final bloc = BlocProvider.of<HomeBloc>(context);
  61 + final clickController = ClickWithMusicController.instance;
60 62 return Scaffold(
61 63 body: Container(
62 64 color: Colors.white,
... ... @@ -77,17 +79,19 @@ class _HomePageView extends StatelessWidget {
77 79 child: GestureDetector(
78 80 onTap: () {
79 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 95 }, bloc);
92 96 },
93 97 child: Column(
... ... @@ -116,28 +120,45 @@ class _HomePageView extends StatelessWidget {
116 120 builder: (context, userState) {
117 121 return GestureDetector(
118 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 163 child: Offstage(
143 164 offstage: AppConfigHelper.shouldHidePay() ||
... ... @@ -151,15 +172,17 @@ class _HomePageView extends StatelessWidget {
151 172 return GestureDetector(
152 173 onTap: () {
153 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 186 }, bloc);
164 187 },
165 188 child: Column(
... ...