Commit 0e314ad506eb74c15af1065bb50507524741e1ce
1 parent
dae2a16e
feat:开屏页播放背景音乐welcome wow english
Showing
4 changed files
with
15 additions
and
10 deletions
lib/app/splash_page.dart
| @@ -14,6 +14,7 @@ import 'package:wow_english/common/request/config.dart'; | @@ -14,6 +14,7 @@ import 'package:wow_english/common/request/config.dart'; | ||
| 14 | import 'package:wow_english/common/request/dao/user_dao.dart'; | 14 | import 'package:wow_english/common/request/dao/user_dao.dart'; |
| 15 | import 'package:wow_english/models/user_entity.dart'; | 15 | import 'package:wow_english/models/user_entity.dart'; |
| 16 | import 'package:wow_english/route/route.dart'; | 16 | import 'package:wow_english/route/route.dart'; |
| 17 | +import 'package:wow_english/utils/audio_player_util.dart'; | ||
| 17 | import 'package:wow_english/utils/log_util.dart'; | 18 | import 'package:wow_english/utils/log_util.dart'; |
| 18 | import 'package:wow_english/utils/sp_util.dart'; | 19 | import 'package:wow_english/utils/sp_util.dart'; |
| 19 | 20 | ||
| @@ -58,7 +59,8 @@ class _TransitionViewState extends State<TransitionView> { | @@ -58,7 +59,8 @@ class _TransitionViewState extends State<TransitionView> { | ||
| 58 | await fetchNecessaryData(token); | 59 | await fetchNecessaryData(token); |
| 59 | apartInMilliseconds = DateTime.now().difference(startTime).inMilliseconds; | 60 | apartInMilliseconds = DateTime.now().difference(startTime).inMilliseconds; |
| 60 | } | 61 | } |
| 61 | - int duration = max(2000 - apartInMilliseconds, 0); | 62 | + /// 开屏最低2.5s,保证视觉与音乐同步 |
| 63 | + int duration = max(2500 - apartInMilliseconds, 0); | ||
| 62 | Log.d('Splash getUserInfo 耗时:${apartInMilliseconds}ms, 最终duration=$duration'); | 64 | Log.d('Splash getUserInfo 耗时:${apartInMilliseconds}ms, 最终duration=$duration'); |
| 63 | Timer(Duration(milliseconds: duration), () { | 65 | Timer(Duration(milliseconds: duration), () { |
| 64 | /*if (userEntity != null) { | 66 | /*if (userEntity != null) { |
| @@ -163,9 +165,10 @@ class _TransitionViewState extends State<TransitionView> { | @@ -163,9 +165,10 @@ class _TransitionViewState extends State<TransitionView> { | ||
| 163 | } | 165 | } |
| 164 | 166 | ||
| 165 | void init() async { | 167 | void init() async { |
| 168 | + changeDevice(); | ||
| 166 | await SpUtil.preInit(); | 169 | await SpUtil.preInit(); |
| 170 | + AudioPlayerUtil.getInstance().playAudio(AudioPlayerUtilType.welcomeToWow); | ||
| 167 | startTime(); | 171 | startTime(); |
| 168 | - changeDevice(); | ||
| 169 | } | 172 | } |
| 170 | 173 | ||
| 171 | void changeDevice() async { | 174 | void changeDevice() async { |
lib/pages/home/bloc.dart
| 1 | -import 'package:audioplayers/audioplayers.dart'; | 1 | +import 'dart:async'; |
| 2 | + | ||
| 2 | import 'package:bloc/bloc.dart'; | 3 | import 'package:bloc/bloc.dart'; |
| 3 | import 'package:wow_english/common/core/user_util.dart'; | 4 | import 'package:wow_english/common/core/user_util.dart'; |
| 4 | -import 'package:wow_english/common/extension/string_extension.dart'; | ||
| 5 | import 'package:wow_english/utils/audio_player_util.dart'; | 5 | import 'package:wow_english/utils/audio_player_util.dart'; |
| 6 | 6 | ||
| 7 | import '../../common/core/app_config_helper.dart'; | 7 | import '../../common/core/app_config_helper.dart'; |
| @@ -21,7 +21,10 @@ class HomeBloc extends Bloc<HomeEvent, HomeState> { | @@ -21,7 +21,10 @@ class HomeBloc extends Bloc<HomeEvent, HomeState> { | ||
| 21 | 21 | ||
| 22 | void _init(InitEvent event, Emitter<HomeState> emit) async { | 22 | void _init(InitEvent event, Emitter<HomeState> emit) async { |
| 23 | if (UserUtil.isLogined()) { | 23 | if (UserUtil.isLogined()) { |
| 24 | - AudioPlayerUtil.getInstance().playAudio(AudioPlayerUtilType.welcomeToWow); | 24 | + /// 增加1s避免与开屏音乐撞车(覆盖) |
| 25 | + Timer(const Duration(seconds: 1), () { | ||
| 26 | + AudioPlayerUtil.getInstance().playAudio(AudioPlayerUtilType.touch); | ||
| 27 | + }); | ||
| 25 | } | 28 | } |
| 26 | await _checkUpdate(emit); | 29 | await _checkUpdate(emit); |
| 27 | } | 30 | } |
lib/pages/home/widgets/ShakeImage.dart
| @@ -38,9 +38,11 @@ class _ShakeImageState extends State<ShakeImage> with SingleTickerProviderStateM | @@ -38,9 +38,11 @@ class _ShakeImageState extends State<ShakeImage> with SingleTickerProviderStateM | ||
| 38 | TweenSequenceItem(tween: Tween(begin: -0.05, end: 0.0).chain(CurveTween(curve: Curves.easeInOut)), weight: 1), | 38 | TweenSequenceItem(tween: Tween(begin: -0.05, end: 0.0).chain(CurveTween(curve: Curves.easeInOut)), weight: 1), |
| 39 | ]).animate(_controller); | 39 | ]).animate(_controller); |
| 40 | 40 | ||
| 41 | - _controller.forward(from: 0.0); | ||
| 42 | - _timer = Timer.periodic(const Duration(seconds: 4), (Timer timer) { | 41 | + Timer(const Duration(seconds: 1), () { |
| 43 | _controller.forward(from: 0.0); | 42 | _controller.forward(from: 0.0); |
| 43 | + _timer = Timer.periodic(const Duration(seconds: 4), (Timer timer) { | ||
| 44 | + _controller.forward(from: 0.0); | ||
| 45 | + }); | ||
| 44 | }); | 46 | }); |
| 45 | 47 | ||
| 46 | // _controller.addStatusListener((status) { | 48 | // _controller.addStatusListener((status) { |
lib/utils/audio_player_util.dart
| @@ -44,9 +44,6 @@ class AudioPlayerUtil extends WidgetsBindingObserver { | @@ -44,9 +44,6 @@ class AudioPlayerUtil extends WidgetsBindingObserver { | ||
| 44 | AudioPlayerUtil.getInstance() | 44 | AudioPlayerUtil.getInstance() |
| 45 | .playAudio(AudioPlayerUtilType.countWithMe); | 45 | .playAudio(AudioPlayerUtilType.countWithMe); |
| 46 | } | 46 | } |
| 47 | - if (currentType == AudioPlayerUtilType.welcomeToWow) { | ||
| 48 | - AudioPlayerUtil.getInstance().playAudio(AudioPlayerUtilType.touch); | ||
| 49 | - } | ||
| 50 | if (currentType == AudioPlayerUtilType.touch) { | 47 | if (currentType == AudioPlayerUtilType.touch) { |
| 51 | AudioPlayerUtil.getInstance().playAudio(AudioPlayerUtilType.touch); | 48 | AudioPlayerUtil.getInstance().playAudio(AudioPlayerUtilType.touch); |
| 52 | } | 49 | } |