Commit d5fb5080ae49dc5e668432e540c340494b50f7fa
1 parent
5e2bbbd3
设置页添加版本号 ,播放音频冗余代码删除
Showing
5 changed files
with
62 additions
and
59 deletions
lib/pages/home/bloc.dart
1 | import 'package:audioplayers/audioplayers.dart'; | 1 | import 'package:audioplayers/audioplayers.dart'; |
2 | import 'package:bloc/bloc.dart'; | 2 | import 'package:bloc/bloc.dart'; |
3 | +import 'package:wow_english/common/core/user_util.dart'; | ||
3 | import 'package:wow_english/common/extension/string_extension.dart'; | 4 | import 'package:wow_english/common/extension/string_extension.dart'; |
4 | 5 | ||
5 | import '../../common/core/app_config_helper.dart'; | 6 | import '../../common/core/app_config_helper.dart'; |
@@ -19,22 +20,14 @@ class HomeBloc extends Bloc<HomeEvent, HomeState> { | @@ -19,22 +20,14 @@ class HomeBloc extends Bloc<HomeEvent, HomeState> { | ||
19 | late AudioPlayer audioPlayer; | 20 | late AudioPlayer audioPlayer; |
20 | late AudioPlayer studyPlayer; | 21 | late AudioPlayer studyPlayer; |
21 | late AudioPlayer gamePlayer; | 22 | late AudioPlayer gamePlayer; |
22 | - @override | ||
23 | - Future<void> close() { | ||
24 | - audioPlayer.release(); | ||
25 | - audioPlayer.dispose(); | ||
26 | - studyPlayer.release(); | ||
27 | - studyPlayer.dispose(); | ||
28 | - gamePlayer.release(); | ||
29 | - gamePlayer.dispose(); | ||
30 | - return super.close(); | ||
31 | - } | ||
32 | 23 | ||
33 | void _init(InitEvent event, Emitter<HomeState> emit) async { | 24 | void _init(InitEvent event, Emitter<HomeState> emit) async { |
34 | - audioPlayer = AudioPlayer(playerId: 'audio'); | ||
35 | - gamePlayer = AudioPlayer(playerId: 'game'); | ||
36 | - studyPlayer = AudioPlayer(playerId: 'study'); | ||
37 | - audioPlayer.play(AssetSource('welcome_to_wow'.assetMp3)); | 25 | + if (UserUtil.isLogined()) { |
26 | + audioPlayer = AudioPlayer(playerId: 'audio'); | ||
27 | + gamePlayer = AudioPlayer(playerId: 'game'); | ||
28 | + studyPlayer = AudioPlayer(playerId: 'study'); | ||
29 | + audioPlayer.play(AssetSource('welcome_to_wow'.assetMp3)); | ||
30 | + } | ||
38 | await _checkUpdate(emit); | 31 | await _checkUpdate(emit); |
39 | } | 32 | } |
40 | 33 |
lib/pages/home/view.dart
@@ -73,15 +73,17 @@ class _HomePageView extends StatelessWidget { | @@ -73,15 +73,17 @@ class _HomePageView extends StatelessWidget { | ||
73 | _checkPermission(() { | 73 | _checkPermission(() { |
74 | bloc.studyPlayer | 74 | bloc.studyPlayer |
75 | .play(AssetSource('class_time'.assetMp3)); | 75 | .play(AssetSource('class_time'.assetMp3)); |
76 | - pushNamed(AppRouteName.courseUnit) | ||
77 | - .then((value) => { | ||
78 | - if (value != null) | ||
79 | - { | ||
80 | - bloc.exchangeResult = | ||
81 | - value['exchange'], | ||
82 | - bloc.add(ExchangeSuccessEvent()) | ||
83 | - } | ||
84 | - }); | 76 | + Future.delayed(const Duration(seconds: 1), () { |
77 | + pushNamed(AppRouteName.courseUnit) | ||
78 | + .then((value) => { | ||
79 | + if (value != null) | ||
80 | + { | ||
81 | + bloc.exchangeResult = | ||
82 | + value['exchange'], | ||
83 | + bloc.add(ExchangeSuccessEvent()) | ||
84 | + } | ||
85 | + }); | ||
86 | + }); | ||
85 | }, bloc); | 87 | }, bloc); |
86 | }, | 88 | }, |
87 | child: Column( | 89 | child: Column( |
lib/pages/section/bloc/section_bloc.dart
@@ -65,22 +65,18 @@ class SectionBloc extends Bloc<SectionEvent, SectionState> { | @@ -65,22 +65,18 @@ class SectionBloc extends Bloc<SectionEvent, SectionState> { | ||
65 | on<RequestEnterClassEvent>(_requestEnterClass); | 65 | on<RequestEnterClassEvent>(_requestEnterClass); |
66 | on<RequestVideoLessonEvent>(_requestVideoLesson); | 66 | on<RequestVideoLessonEvent>(_requestVideoLesson); |
67 | on<CurrentUnitIndexChangeEvent>(_pageControllerChange); | 67 | on<CurrentUnitIndexChangeEvent>(_pageControllerChange); |
68 | - on<InitEvent>(_init); | ||
69 | - on<InitBlocEvent>((event, emit) { | ||
70 | - // audioPlayer = AudioPlayer(playerId: 'section'); | ||
71 | - // backgroundPlayer = AudioPlayer(playerId: 'back'); | ||
72 | - // backgroundPlayer.onPlayerStateChanged.listen((event) async { | ||
73 | - // if (event == PlayerState.completed) { | ||
74 | - // debugPrint('播放结束'); | ||
75 | - // backgroundPlayer | ||
76 | - // .play(AssetSource('count_with_me_instrumental'.assetMp3)); | ||
77 | - // } | ||
78 | - // }); | ||
79 | - // audioPlayer.onPlayerStateChanged.listen((event) async { | ||
80 | - // if (event == PlayerState.completed) { | ||
81 | - // debugPrint('播放结束'); | ||
82 | - // } | ||
83 | - // }); | 68 | + on<InitEvent>((event, emit) { |
69 | + audioPlayer = AudioPlayer(playerId: 'section'); | ||
70 | + backgroundPlayer = AudioPlayer(playerId: 'back'); | ||
71 | + backgroundPlayer.play(AssetSource('count_with_me_instrumental'.assetMp3)); | ||
72 | + | ||
73 | + backgroundPlayer.onPlayerStateChanged.listen((event) async { | ||
74 | + if (event == PlayerState.completed) { | ||
75 | + // 播放结束再次播放 | ||
76 | + backgroundPlayer | ||
77 | + .play(AssetSource('count_with_me_instrumental'.assetMp3)); | ||
78 | + } | ||
79 | + }); | ||
84 | }); | 80 | }); |
85 | } | 81 | } |
86 | @override | 82 | @override |
@@ -92,12 +88,6 @@ class SectionBloc extends Bloc<SectionEvent, SectionState> { | @@ -92,12 +88,6 @@ class SectionBloc extends Bloc<SectionEvent, SectionState> { | ||
92 | return super.close(); | 88 | return super.close(); |
93 | } | 89 | } |
94 | 90 | ||
95 | - void _init(InitEvent event, Emitter<SectionState> emit) async { | ||
96 | - audioPlayer = AudioPlayer(playerId: 'section'); | ||
97 | - // backgroundPlayer = AudioPlayer(playerId: 'back'); | ||
98 | - // backgroundPlayer.play(AssetSource('count_with_me_instrumental'.assetMp3)); | ||
99 | - } | ||
100 | - | ||
101 | void _requestSectionsData( | 91 | void _requestSectionsData( |
102 | RequestDataEvent event, Emitter<SectionState> emitter) async { | 92 | RequestDataEvent event, Emitter<SectionState> emitter) async { |
103 | try { | 93 | try { |
lib/pages/section/bloc/section_event.dart
@@ -55,5 +55,3 @@ class CurrentUnitIndexChangeEvent extends SectionEvent { | @@ -55,5 +55,3 @@ class CurrentUnitIndexChangeEvent extends SectionEvent { | ||
55 | 55 | ||
56 | CurrentUnitIndexChangeEvent(this.unitIndex); | 56 | CurrentUnitIndexChangeEvent(this.unitIndex); |
57 | } | 57 | } |
58 | - | ||
59 | -class InitBlocEvent extends SectionEvent {} |
lib/pages/user/setting/setting_page.dart
1 | import 'package:flutter/material.dart'; | 1 | import 'package:flutter/material.dart'; |
2 | import 'package:flutter_screenutil/flutter_screenutil.dart'; | 2 | import 'package:flutter_screenutil/flutter_screenutil.dart'; |
3 | +import 'package:package_info_plus/package_info_plus.dart'; | ||
3 | import 'package:wow_english/common/widgets/we_app_bar.dart'; | 4 | import 'package:wow_english/common/widgets/we_app_bar.dart'; |
4 | 5 | ||
5 | import '../../../route/route.dart'; | 6 | import '../../../route/route.dart'; |
@@ -9,14 +10,30 @@ class SettingPage extends StatefulWidget { | @@ -9,14 +10,30 @@ class SettingPage extends StatefulWidget { | ||
9 | 10 | ||
10 | @override | 11 | @override |
11 | State<StatefulWidget> createState() { | 12 | State<StatefulWidget> createState() { |
12 | - return SettingPageState(); | 13 | + return SettingPageState(); |
13 | } | 14 | } |
14 | } | 15 | } |
15 | 16 | ||
16 | class SettingPageState extends State<SettingPage> { | 17 | class SettingPageState extends State<SettingPage> { |
18 | + String? _version; | ||
19 | + String? _buildNum; | ||
20 | + @override | ||
21 | + void initState() { | ||
22 | + super.initState(); | ||
23 | + _retrieveVersionInfo(); | ||
24 | + } | ||
25 | + | ||
26 | + Future<void> _retrieveVersionInfo() async { | ||
27 | + PackageInfo packageInfo = await PackageInfo.fromPlatform(); | ||
28 | + setState(() { | ||
29 | + _version = packageInfo.version; | ||
30 | + _buildNum = packageInfo.buildNumber; | ||
31 | + }); | ||
32 | + } | ||
33 | + | ||
17 | @override | 34 | @override |
18 | Widget build(BuildContext context) { | 35 | Widget build(BuildContext context) { |
19 | - return Scaffold( | 36 | + return Scaffold( |
20 | appBar: const WEAppBar( | 37 | appBar: const WEAppBar( |
21 | titleText: '设置', | 38 | titleText: '设置', |
22 | ), | 39 | ), |
@@ -28,17 +45,18 @@ class SettingPageState extends State<SettingPage> { | @@ -28,17 +45,18 @@ class SettingPageState extends State<SettingPage> { | ||
28 | child: ListView( | 45 | child: ListView( |
29 | children: [ | 46 | children: [ |
30 | 34.verticalSpace, | 47 | 34.verticalSpace, |
31 | - _buildItemWidget('注销账号', onPress: (){ | 48 | + _buildItemWidget('注销账号', onPress: () { |
32 | pushNamed(AppRouteName.deleteAccount); | 49 | pushNamed(AppRouteName.deleteAccount); |
33 | }), | 50 | }), |
34 | 12.verticalSpace, | 51 | 12.verticalSpace, |
35 | - _buildItemWidget('清除缓存', onPress: (){ | ||
36 | - | ||
37 | - }), | 52 | + _buildItemWidget('清除缓存', onPress: () {}), |
38 | 12.verticalSpace, | 53 | 12.verticalSpace, |
39 | - _buildItemWidget('帮助与反馈', onPress: (){ | 54 | + _buildItemWidget('帮助与反馈', onPress: () { |
40 | pushNamed(AppRouteName.reBack); | 55 | pushNamed(AppRouteName.reBack); |
41 | }), | 56 | }), |
57 | + 12.verticalSpace, | ||
58 | + _buildItemWidget('Version: $_version Build:$_buildNum', | ||
59 | + onPress: () {}), | ||
42 | ], | 60 | ], |
43 | ), | 61 | ), |
44 | ), | 62 | ), |
@@ -46,13 +64,15 @@ class SettingPageState extends State<SettingPage> { | @@ -46,13 +64,15 @@ class SettingPageState extends State<SettingPage> { | ||
46 | ), | 64 | ), |
47 | ); | 65 | ); |
48 | } | 66 | } |
49 | - | ||
50 | - Widget _buildItemWidget(String text,{VoidCallback? onPress}) { | 67 | + |
68 | + Widget _buildItemWidget(String text, {VoidCallback? onPress}) { | ||
51 | return OutlinedButton( | 69 | return OutlinedButton( |
52 | onPressed: () => onPress?.call(), | 70 | onPressed: () => onPress?.call(), |
53 | style: ButtonStyle( | 71 | style: ButtonStyle( |
54 | - side: MaterialStateProperty.all(BorderSide(color: const Color(0xFF140C10), width: 1.5.w)), | ||
55 | - shape: MaterialStateProperty.all(RoundedRectangleBorder(borderRadius: BorderRadius.circular(15.r))), | 72 | + side: MaterialStateProperty.all( |
73 | + BorderSide(color: const Color(0xFF140C10), width: 1.5.w)), | ||
74 | + shape: MaterialStateProperty.all( | ||
75 | + RoundedRectangleBorder(borderRadius: BorderRadius.circular(15.r))), | ||
56 | minimumSize: MaterialStateProperty.all(Size(double.infinity, 58.h)), | 76 | minimumSize: MaterialStateProperty.all(Size(double.infinity, 58.h)), |
57 | backgroundColor: MaterialStateProperty.all(Colors.white), | 77 | backgroundColor: MaterialStateProperty.all(Colors.white), |
58 | ), | 78 | ), |
@@ -66,4 +86,4 @@ class SettingPageState extends State<SettingPage> { | @@ -66,4 +86,4 @@ class SettingPageState extends State<SettingPage> { | ||
66 | ), | 86 | ), |
67 | ); | 87 | ); |
68 | } | 88 | } |
69 | -} | ||
70 | \ No newline at end of file | 89 | \ No newline at end of file |
90 | +} |