Commit 0e314ad506eb74c15af1065bb50507524741e1ce

Authored by 吴启风
1 parent dae2a16e

feat:开屏页播放背景音乐welcome wow english

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&lt;ShakeImage&gt; with SingleTickerProviderStateM @@ -38,9 +38,11 @@ class _ShakeImageState extends State&lt;ShakeImage&gt; 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 }