From f29687b2fe98680efbe9ac7805cc6e830ef1f8d4 Mon Sep 17 00:00:00 2001
From: biao <>
Date: Thu, 27 Jun 2024 15:13:35 +0800
Subject: [PATCH] 修复iOS偶现按钮消失问题,练习页面返回按钮尺寸和标题位置
---
ios/Runner.xcodeproj/project.pbxproj | 6 +++---
ios/Runner/Info.plist | 6 +++---
ios/Runner/Wowgame/WowGameClasses/WowGameCocosManager.mm | 12 ++++++++++++
lib/pages/practice/topic_picture_page.dart | 533 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
lib/pages/practice/widgets/practice_header_widget.dart | 44 ++++++++++++++++++++++----------------------
5 files changed, 309 insertions(+), 292 deletions(-)
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 7c49a8a..368425a 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -2327,7 +2327,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 11;
+ CURRENT_PROJECT_VERSION = 12;
DEVELOPMENT_TEAM = T8P9KW8GWH;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
@@ -2671,7 +2671,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 11;
+ CURRENT_PROJECT_VERSION = 12;
DEVELOPMENT_TEAM = T8P9KW8GWH;
ENABLE_BITCODE = NO;
HEADER_SEARCH_PATHS = (
@@ -2876,7 +2876,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 11;
+ CURRENT_PROJECT_VERSION = 12;
DEVELOPMENT_TEAM = T8P9KW8GWH;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 9d8de18..b7b9e34 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -92,16 +92,16 @@
UISupportedInterfaceOrientations
- UIInterfaceOrientationPortrait
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
+ UIInterfaceOrientationPortrait
UISupportedInterfaceOrientations~ipad
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
UIViewControllerBasedStatusBarAppearance
diff --git a/ios/Runner/Wowgame/WowGameClasses/WowGameCocosManager.mm b/ios/Runner/Wowgame/WowGameClasses/WowGameCocosManager.mm
index e2ed739..127888c 100644
--- a/ios/Runner/Wowgame/WowGameClasses/WowGameCocosManager.mm
+++ b/ios/Runner/Wowgame/WowGameClasses/WowGameCocosManager.mm
@@ -48,6 +48,7 @@ static CocosAppDelegate cocosAppDelegate;
}
- (void)exitGame {
+
[self.gameViewController dismissViewControllerAnimated:YES completion:nil];
}
@@ -102,6 +103,7 @@ static DMProgressHUD *hud;
}
-(void)startGameWithID:(NSInteger)gameid {
+ [self clearData];
cocos2d::Director::getInstance()->getScheduler()->performFunctionInCocosThread([=] {
// CCLOG("start gameid---> %d ", gameid);
cocos2d::EventCustom evtEnter("start_gameid");
@@ -117,6 +119,16 @@ static DMProgressHUD *hud;
}
+- (void)clearData
+{
+ cocos2d::SpriteFrameCache::getInstance()->removeSpriteFrames();
+ cocos2d::Director::getInstance()->getTextureCache()->removeAllTextures();
+ //清理搜索路径
+ std::vector searchPathArray;
+ searchPathArray.push_back("res");
+ cocos2d::FileUtils::getInstance()->setSearchPaths(searchPathArray);
+}
+
- (void)detoryCocosEnvironment {
}
diff --git a/lib/pages/practice/topic_picture_page.dart b/lib/pages/practice/topic_picture_page.dart
index dd3cf43..7de6e92 100644
--- a/lib/pages/practice/topic_picture_page.dart
+++ b/lib/pages/practice/topic_picture_page.dart
@@ -14,7 +14,7 @@ import '../../common/widgets/throttledGesture_gesture_detector.dart';
import 'bloc/topic_picture_bloc.dart';
import 'widgets/practice_header_widget.dart';
-class TopicPicturePage extends StatelessWidget {
+class TopicPicturePage extends StatelessWidget {
const TopicPicturePage({super.key, this.courseLessonId});
final String? courseLessonId;
@@ -23,20 +23,18 @@ class TopicPicturePage extends StatelessWidget {
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => TopicPictureBloc(
- context,
- PageController(),
- courseLessonId??'',
+ context,
+ PageController(),
+ courseLessonId ?? '',
)
..add(InitBlocEvent())
..add(RequestDataEvent())
- ..add(XSVoiceInitEvent(
- {
- 'appKey':AppConsts.xsAppKey,
- 'service':AppConsts.xsAppService,
- 'secretKey':AppConsts.xsAppSecretKey,
- 'userId':UserUtil.getUser()!.id.toString(),
- }
- )),
+ ..add(XSVoiceInitEvent({
+ 'appKey': AppConsts.xsAppKey,
+ 'service': AppConsts.xsAppService,
+ 'secretKey': AppConsts.xsAppSecretKey,
+ 'userId': UserUtil.getUser()!.id.toString(),
+ })),
child: _TopicPicturePage(),
);
}
@@ -45,21 +43,20 @@ class TopicPicturePage extends StatelessWidget {
class _TopicPicturePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
- return BlocListener(
- listener: (context, state){
+ return BlocListener(
+ listener: (context, state) {
if (state is RequestDataState) {
context.read().add(CurrentPageIndexChangeEvent(0));
}
- if (state is XSVoiceTestState) {
-
- }
+ if (state is XSVoiceTestState) {}
},
child: _topicPictureView(),
);
}
- Widget _topicPictureView() => BlocBuilder(
- builder: (context,state){
+ Widget _topicPictureView() =>
+ BlocBuilder(
+ builder: (context, state) {
final bloc = BlocProvider.of(context);
return Container(
color: Colors.white,
@@ -70,14 +67,13 @@ class _TopicPicturePage extends StatelessWidget {
PracticeHeaderWidget(
title: '${bloc.currentPage}/${bloc.entity?.topics?.length}',
onTap: () {
- popPage(
- data:{
- 'currentStep':bloc.currentPage,
- 'courseLessonId':bloc.courseLessonId,
- 'isCompleted': bloc.isLastPage(),
- });
+ popPage(data: {
+ 'currentStep': bloc.currentPage,
+ 'courseLessonId': bloc.courseLessonId,
+ 'isCompleted': bloc.isLastPage(),
+ });
// Navigator.pop(context);
- },
+ },
),
Expanded(
child: PageView.builder(
@@ -87,17 +83,27 @@ class _TopicPicturePage extends StatelessWidget {
onPageChanged: (int index) {
bloc.add(CurrentPageIndexChangeEvent(index));
},
- itemBuilder: (BuildContext context,int index){
- CourseProcessTopics? topics = bloc.entity?.topics![index];
- if (topics?.type == TopicType.audioImageSelect.value) {//听音选图
+ itemBuilder: (BuildContext context, int index) {
+ CourseProcessTopics? topics =
+ bloc.entity?.topics![index];
+ if (topics?.type ==
+ TopicType.audioImageSelect.value) {
+ //听音选图
return _pageViewVoicePictureItemWidget(topics);
- } else if (topics?.type == TopicType.audioCharSelect.value) {//听音选字
+ } else if (topics?.type ==
+ TopicType.audioCharSelect.value) {
+ //听音选字
return _pageViewVoiceWordItemWidget(topics);
- } else if (topics?.type == TopicType.questionCharSelect.value) {//看题选字
+ } else if (topics?.type ==
+ TopicType.questionCharSelect.value) {
+ //看题选字
return _pageViewWordItemWidget(topics);
- } else if (topics?.type == TopicType.questionImageSelect.value) {//看题选图
+ } else if (topics?.type ==
+ TopicType.questionImageSelect.value) {
+ //看题选图
return _pageViewItemWidget(topics);
- } else {//语音问答
+ } else {
+ //语音问答
return _voiceAnswerItem(topics);
}
}),
@@ -108,37 +114,34 @@ class _TopicPicturePage extends StatelessWidget {
left: 0,
right: 0,
bottom: 0,
- child: Image.asset('bottom_grass'.assetPng)
- )
+ child: Image.asset('bottom_grass'.assetPng))
],
),
);
});
///看题选图
- Widget _pageViewItemWidget(CourseProcessTopics? topics) => BlocBuilder(
- builder: (context, state){
+ Widget _pageViewItemWidget(CourseProcessTopics? topics) =>
+ BlocBuilder(
+ builder: (context, state) {
return SafeArea(
child: Column(
children: [
- Text(
- topics?.word??'',
+ Text(topics?.word ?? '',
softWrap: true,
style: TextStyle(
- fontSize: 21.sp,
- color: const Color(0xFF333333)
- )
- ),
+ fontSize: 21.sp, color: const Color(0xFF333333))),
26.verticalSpace,
SizedBox(
height: 143.h,
- width: 143.w * (topics?.topicAnswerList?.length??0),
+ width: 143.w * (topics?.topicAnswerList?.length ?? 0),
child: ListView.builder(
scrollDirection: Axis.horizontal,
physics: const NeverScrollableScrollPhysics(),
- itemCount: topics?.topicAnswerList?.length??0,
- itemBuilder: (context,index){
- return _decodeImageWidget(index,topics?.topicAnswerList?[index]);
+ itemCount: topics?.topicAnswerList?.length ?? 0,
+ itemBuilder: (context, index) {
+ return _decodeImageWidget(
+ index, topics?.topicAnswerList?[index]);
}),
),
],
@@ -146,65 +149,63 @@ class _TopicPicturePage extends StatelessWidget {
);
});
- Widget _decodeImageWidget(int index,CourseProcessTopicsTopicAnswerList? answerLis) => BlocBuilder(
- buildWhen: (_, s) => s is SelectItemChangeState,
- builder: (context,state){
- final bloc = BlocProvider.of(context);
- return Container(
- padding: EdgeInsets.symmetric(horizontal: 10.w),
- child: GestureDetector(
- onTap: () => bloc.add(SelectItemEvent(index)),
- child: Container(
- padding: const EdgeInsets.all(4.5),
- decoration: BoxDecoration(
- color: bloc.selectItem == index?const Color(0xFF00B6F1):Colors.white,
- borderRadius: BorderRadius.circular(15),
- ),
- height: 143.h,
- width: 143.w,
- child: Container(
- decoration: BoxDecoration(
- color: Colors.white,
+ Widget _decodeImageWidget(
+ int index, CourseProcessTopicsTopicAnswerList? answerLis) =>
+ BlocBuilder(
+ buildWhen: (_, s) => s is SelectItemChangeState,
+ builder: (context, state) {
+ final bloc = BlocProvider.of(context);
+ return Container(
+ padding: EdgeInsets.symmetric(horizontal: 10.w),
+ child: GestureDetector(
+ onTap: () => bloc.add(SelectItemEvent(index)),
+ child: Container(
+ padding: const EdgeInsets.all(4.5),
+ decoration: BoxDecoration(
+ color: bloc.selectItem == index
+ ? const Color(0xFF00B6F1)
+ : Colors.white,
borderRadius: BorderRadius.circular(15),
- border: Border.all(
- width: 1.0,
- color: const Color(0xFF140C10)
- ),
- image: DecorationImage(
- fit: BoxFit.fitWidth,
- image: NetworkImage(answerLis?.picUrl??'')
- )
+ ),
+ height: 143.h,
+ width: 143.w,
+ child: Container(
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.circular(15),
+ border: Border.all(
+ width: 1.0, color: const Color(0xFF140C10)),
+ image: DecorationImage(
+ fit: BoxFit.fitWidth,
+ image: NetworkImage(answerLis?.picUrl ?? ''))),
+ ),
),
),
- ),
- ),
- );
- });
+ );
+ });
///看题选字
- Widget _pageViewWordItemWidget(CourseProcessTopics? topics) => BlocBuilder(
- builder: (context, state){
+ Widget _pageViewWordItemWidget(CourseProcessTopics? topics) =>
+ BlocBuilder(
+ builder: (context, state) {
return SafeArea(
child: Column(
children: [
- Text(
- topics?.word??'',
+ Text(topics?.word ?? '',
softWrap: true,
style: TextStyle(
- fontSize: 21.sp,
- color: const Color(0xFF333333)
- )
- ),
+ fontSize: 21.sp, color: const Color(0xFF333333))),
26.verticalSpace,
SizedBox(
height: 143.h,
- width: 143.w * (topics?.topicAnswerList?.length??0),
+ width: 143.w * (topics?.topicAnswerList?.length ?? 0),
child: ListView.builder(
scrollDirection: Axis.horizontal,
- itemCount: topics?.topicAnswerList?.length??0,
+ itemCount: topics?.topicAnswerList?.length ?? 0,
physics: const NeverScrollableScrollPhysics(),
- itemBuilder: (context,index){
- return _decodeWordWidget(index,topics?.topicAnswerList?[index]);
+ itemBuilder: (context, index) {
+ return _decodeWordWidget(
+ index, topics?.topicAnswerList?[index]);
}),
),
],
@@ -212,65 +213,64 @@ class _TopicPicturePage extends StatelessWidget {
);
});
- Widget _decodeWordWidget(int index,CourseProcessTopicsTopicAnswerList? answerLis) => BlocBuilder(
- buildWhen: (_, s) => s is SelectItemChangeState,
- builder: (context,state){
- final bloc = BlocProvider.of(context);
- return Container(
- padding: EdgeInsets.symmetric(horizontal: 10.w),
- child: GestureDetector(
- onTap: () => bloc.add(SelectItemEvent(index)),
- child: Container(
- width: 143.w,
- height: 143.h,
- padding: EdgeInsets.only(left: 13.w,right: 13.w,top: 13.h,bottom: 13.h),
- decoration: BoxDecoration(
- color: Colors.white,
- borderRadius: BorderRadius.circular(15),
- border: Border.all(
- width: 1.0,
- color: const Color(0xFF140C10)
- ),
- ),
- child: Column(
- mainAxisAlignment: MainAxisAlignment.end,
- children: [
- Expanded(
- child: Container(
- alignment: Alignment.center,
- child: Text(
- answerLis?.word??'',
- style: TextStyle(
- fontSize: 20.sp,
- color: const Color(0xFF333333)
- )
- ),
- ),
+ Widget _decodeWordWidget(
+ int index, CourseProcessTopicsTopicAnswerList? answerLis) =>
+ BlocBuilder(
+ buildWhen: (_, s) => s is SelectItemChangeState,
+ builder: (context, state) {
+ final bloc = BlocProvider.of(context);
+ return Container(
+ padding: EdgeInsets.symmetric(horizontal: 10.w),
+ child: GestureDetector(
+ onTap: () => bloc.add(SelectItemEvent(index)),
+ child: Container(
+ width: 143.w,
+ height: 143.h,
+ padding: EdgeInsets.only(
+ left: 13.w, right: 13.w, top: 13.h, bottom: 13.h),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.circular(15),
+ border:
+ Border.all(width: 1.0, color: const Color(0xFF140C10)),
),
- Container(
- height: 30.h,
- width: double.infinity,
- decoration: BoxDecoration(
- color: bloc.selectItem == index?const Color(0xFF00B6F1):Colors.white,
- borderRadius: BorderRadius.circular(15.r),
- border: Border.all(
- width: 1.5,
- color: const Color(0xFF140C10)
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.end,
+ children: [
+ Expanded(
+ child: Container(
+ alignment: Alignment.center,
+ child: Text(answerLis?.word ?? '',
+ style: TextStyle(
+ fontSize: 20.sp,
+ color: const Color(0xFF333333))),
+ ),
),
- ),
- alignment: Alignment.center,
- child: Image.asset('choose'.assetPng),
- )
- ],
+ Container(
+ height: 30.h,
+ width: double.infinity,
+ decoration: BoxDecoration(
+ color: bloc.selectItem == index
+ ? const Color(0xFF00B6F1)
+ : Colors.white,
+ borderRadius: BorderRadius.circular(15.r),
+ border: Border.all(
+ width: 1.5, color: const Color(0xFF140C10)),
+ ),
+ alignment: Alignment.center,
+ child: Image.asset('choose'.assetPng),
+ )
+ ],
+ ),
+ ),
),
- ),
- ),
- );
- });
+ );
+ });
///听音选图
- Widget _pageViewVoicePictureItemWidget(CourseProcessTopics? topics) => BlocBuilder(
- builder: (context, state){
+ Widget _pageViewVoicePictureItemWidget(CourseProcessTopics? topics) =>
+ BlocBuilder(
+ builder: (context, state) {
final bloc = BlocProvider.of(context);
return SafeArea(
child: Column(
@@ -283,101 +283,101 @@ class _TopicPicturePage extends StatelessWidget {
bloc.add(VoicePlayEvent());
},
child: Image.asset(
- bloc.voicePlayState == VoicePlayState.playing?'reade_answer'.assetGif:'voice'.assetPng,
+ bloc.voicePlayState == VoicePlayState.playing
+ ? 'reade_answer'.assetGif
+ : 'voice'.assetPng,
height: 33.h,
width: 30.w,
),
),
10.horizontalSpace,
- Text(
- topics?.word??'',
+ Text(topics?.word ?? '',
style: TextStyle(
- fontSize: 20.sp,
- color: const Color(0xFF333333)
- )
- )
+ fontSize: 20.sp, color: const Color(0xFF333333)))
],
),
26.verticalSpace,
SizedBox(
height: 143.h,
- width: 163.w * (topics?.topicAnswerList?.length??0),
+ width: 163.w * (topics?.topicAnswerList?.length ?? 0),
child: ListView.builder(
scrollDirection: Axis.horizontal,
physics: const NeverScrollableScrollPhysics(),
- itemCount: topics?.topicAnswerList?.length??0,
- itemBuilder: (BuildContext context,int index){
- return _decodeVoiceImageWidget(index,topics?.topicAnswerList?[index]);
- })
- ,
+ itemCount: topics?.topicAnswerList?.length ?? 0,
+ itemBuilder: (BuildContext context, int index) {
+ return _decodeVoiceImageWidget(
+ index, topics?.topicAnswerList?[index]);
+ }),
)
],
),
);
});
- Widget _decodeVoiceImageWidget(int index,CourseProcessTopicsTopicAnswerList? answerList) => BlocBuilder(
- buildWhen: (_, s) => s is SelectItemChangeState,
- builder: (context,state){
- final bloc = BlocProvider.of(context);
- return Container(
- padding: EdgeInsets.symmetric(horizontal: 10.w),
- child: GestureDetector(
- onTap: () => bloc.add(SelectItemEvent(index)),
- child: Container(
- padding: const EdgeInsets.all(4.5),
- decoration: BoxDecoration(
- color: bloc.selectItem == index?const Color(0xFF00B6F1):Colors.white,
- borderRadius: BorderRadius.circular(15),
- ),
- height: 143.h,
- width: 143.w,
- child: Container(
- decoration: BoxDecoration(
- color: Colors.white,
+ Widget _decodeVoiceImageWidget(
+ int index, CourseProcessTopicsTopicAnswerList? answerList) =>
+ BlocBuilder(
+ buildWhen: (_, s) => s is SelectItemChangeState,
+ builder: (context, state) {
+ final bloc = BlocProvider.of(context);
+ return Container(
+ padding: EdgeInsets.symmetric(horizontal: 10.w),
+ child: GestureDetector(
+ onTap: () => bloc.add(SelectItemEvent(index)),
+ child: Container(
+ padding: const EdgeInsets.all(4.5),
+ decoration: BoxDecoration(
+ color: bloc.selectItem == index
+ ? const Color(0xFF00B6F1)
+ : Colors.white,
borderRadius: BorderRadius.circular(15),
- border: Border.all(
- width: 1.0,
- color: const Color(0xFF140C10)
- ),
- image: DecorationImage(
- fit: BoxFit.fitWidth,
- image: NetworkImage(answerList?.picUrl??'')
- )
+ ),
+ height: 143.h,
+ width: 143.w,
+ child: Container(
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.circular(15),
+ border: Border.all(
+ width: 1.0, color: const Color(0xFF140C10)),
+ image: DecorationImage(
+ fit: BoxFit.fitWidth,
+ image: NetworkImage(answerList?.picUrl ?? ''))),
+ ),
),
),
- ),
- ),
- );
- });
+ );
+ });
///听音选字
- Widget _pageViewVoiceWordItemWidget(CourseProcessTopics? topics) => BlocBuilder(
- builder: (context, state){
+ Widget _pageViewVoiceWordItemWidget(CourseProcessTopics? topics) =>
+ BlocBuilder(
+ builder: (context, state) {
final bloc = BlocProvider.of(context);
return SafeArea(
child: Column(
children: [
GestureDetector(
- onTap: () {
- bloc.add(VoicePlayEvent());
- },
- child: Image.asset(
- bloc.voicePlayState == VoicePlayState.playing?'reade_answer'.assetGif:'voice'.assetPng,
- height: 33.h,
- width: 30.w
- )
- ),
+ onTap: () {
+ bloc.add(VoicePlayEvent());
+ },
+ child: Image.asset(
+ bloc.voicePlayState == VoicePlayState.playing
+ ? 'reade_answer'.assetGif
+ : 'voice'.assetPng,
+ height: 33.h,
+ width: 30.w)),
26.verticalSpace,
SizedBox(
- width: 163.w * (topics?.topicAnswerList?.length??0),
+ width: 163.w * (topics?.topicAnswerList?.length ?? 0),
height: 143.h,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: topics?.topicAnswerList?.length,
physics: const NeverScrollableScrollPhysics(),
- itemBuilder: (BuildContext context,int index){
- return _decodeVoiceWordImageWidget(index, topics!.topicAnswerList![index]);
+ itemBuilder: (BuildContext context, int index) {
+ return _decodeVoiceWordImageWidget(
+ index, topics!.topicAnswerList![index]);
}),
),
],
@@ -385,73 +385,72 @@ class _TopicPicturePage extends StatelessWidget {
);
});
- Widget _decodeVoiceWordImageWidget(int index,CourseProcessTopicsTopicAnswerList answerList) => BlocBuilder(
- buildWhen: (_, s) => s is SelectItemChangeState,
- builder: (context,state){
- final bloc = BlocProvider.of(context);
- return GestureDetector(
- onTap: () => bloc.add(SelectItemEvent(index)),
- child: Container(
- width: 163.w,
- height: 143.h,
- padding: EdgeInsets.symmetric(horizontal: 10.w),
- child: Container(
- width: 143.w,
- height: 143.h,
- padding: EdgeInsets.only(left: 13.w,right: 13.w,top: 13.h,bottom: 13.h),
- decoration: BoxDecoration(
- color: Colors.white,
- borderRadius: BorderRadius.circular(15),
- border: Border.all(
- width: 1.0,
- color: const Color(0xFF140C10)
- ),
- ),
- child: Column(
- mainAxisAlignment: MainAxisAlignment.end,
- children: [
- Expanded(
- child: Container(
- alignment: Alignment.center,
- child: Text(
- answerList.word??'',
- style: TextStyle(
- fontSize: 20.sp,
- color: const Color(0xFF333333)
- )
- ),
- ),
+ Widget _decodeVoiceWordImageWidget(
+ int index, CourseProcessTopicsTopicAnswerList answerList) =>
+ BlocBuilder(
+ buildWhen: (_, s) => s is SelectItemChangeState,
+ builder: (context, state) {
+ final bloc = BlocProvider.of(context);
+ return GestureDetector(
+ onTap: () => bloc.add(SelectItemEvent(index)),
+ child: Container(
+ width: 163.w,
+ height: 143.h,
+ padding: EdgeInsets.symmetric(horizontal: 10.w),
+ child: Container(
+ width: 143.w,
+ height: 143.h,
+ padding: EdgeInsets.only(
+ left: 13.w, right: 13.w, top: 13.h, bottom: 13.h),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.circular(15),
+ border:
+ Border.all(width: 1.0, color: const Color(0xFF140C10)),
),
- Container(
- height: 30.h,
- width: double.infinity,
- decoration: BoxDecoration(
- color: bloc.selectItem == index?const Color(0xFF00B6F1):Colors.white,
- borderRadius: BorderRadius.circular(15.r),
- border: Border.all(
- width: 1.5,
- color: const Color(0xFF140C10)
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.end,
+ children: [
+ Expanded(
+ child: Container(
+ alignment: Alignment.center,
+ child: Text(answerList.word ?? '',
+ style: TextStyle(
+ fontSize: 20.sp,
+ color: const Color(0xFF333333))),
+ ),
),
- ),
- alignment: Alignment.center,
- child: Image.asset('choose'.assetPng),
- )
- ],
+ Container(
+ height: 30.h,
+ width: double.infinity,
+ decoration: BoxDecoration(
+ color: bloc.selectItem == index
+ ? const Color(0xFF00B6F1)
+ : Colors.white,
+ borderRadius: BorderRadius.circular(15.r),
+ border: Border.all(
+ width: 1.5, color: const Color(0xFF140C10)),
+ ),
+ alignment: Alignment.center,
+ child: Image.asset('choose'.assetPng),
+ )
+ ],
+ ),
+ ),
),
- ),
- ),
- );
- });
+ );
+ });
///语音问答
- Widget _voiceAnswerItem(CourseProcessTopics? topics) => BlocBuilder(
- builder: (context, state) {
+ Widget _voiceAnswerItem(CourseProcessTopics? topics) =>
+ BlocBuilder(
+ builder: (context, state) {
final bloc = BlocProvider.of(context);
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
OwImageWidget(
- name:topics?.picUrl??'',
+ name: topics?.picUrl ?? '',
height: 186.h,
width: 186.w,
),
@@ -470,12 +469,14 @@ class _TopicPicturePage extends StatelessWidget {
child: Row(
children: [
Image.asset(
- bloc.voicePlayState == VoicePlayState.playing?'reade_answer'.assetGif:'voice'.assetPng,
+ bloc.voicePlayState == VoicePlayState.playing
+ ? 'reade_answer'.assetGif
+ : 'voice'.assetPng,
height: 52.h,
width: 46.w,
),
10.horizontalSpace,
- Text(topics?.word??'')
+ Text(topics?.word ?? '')
],
),
),
@@ -494,13 +495,17 @@ class _TopicPicturePage extends StatelessWidget {
}
if (topics?.type == TopicType.voiceQuestion.value ||
topics?.type == TopicType.voiceWord.value) {
- bloc.add(XSVoiceStartEvent(topics?.keyWord??'', '0',UserUtil.getUser()!.id.toString()));
+ bloc.add(XSVoiceStartEvent(topics?.keyWord ?? '', '0',
+ UserUtil.getUser()!.id.toString()));
} else {
- bloc.add(XSVoiceStartEvent(topics?.word??'', '0',UserUtil.getUser()!.id.toString()));
+ bloc.add(XSVoiceStartEvent(topics?.word ?? '', '0',
+ UserUtil.getUser()!.id.toString()));
}
},
child: Image.asset(
- bloc.isVoicing?'micro_phone'.assetGif:'micro_phone'.assetPng,
+ bloc.isVoicing
+ ? 'micro_phone'.assetGif
+ : 'micro_phone'.assetPng,
height: 75.w,
width: 75.w,
),
diff --git a/lib/pages/practice/widgets/practice_header_widget.dart b/lib/pages/practice/widgets/practice_header_widget.dart
index 08e7d7e..493977a 100644
--- a/lib/pages/practice/widgets/practice_header_widget.dart
+++ b/lib/pages/practice/widgets/practice_header_widget.dart
@@ -13,35 +13,35 @@ class PracticeHeaderWidget extends StatelessWidget {
Widget build(BuildContext context) {
return Container(
color: Colors.white,
- height: kToolbarHeight,
+ height: kToolbarHeight + 3.h,
child: AppBar(
- leading: IconButton(
- icon: Image.asset(
+ leading: GestureDetector(
+ child: Image.asset(
'back_around'.assetPng,
- width: 40,
- height: 40,
+ width: 40.w,
+ height: 40.h,
),
- onPressed: () {
- onTap();
- },
+ onTap: () => {onTap()},
),
centerTitle: true,
title: Container(
- height: 40.h,
- padding: EdgeInsets.symmetric(horizontal: 27.w, vertical: 6.h),
- decoration: BoxDecoration(
- color: const Color(0xFF00B6F1),
- borderRadius: BorderRadius.circular(20.r),
- border: Border.all(
- width: 1.0,
- color: const Color(0xFF333333),
- ),
- ),
- child: Text(
- title,
- style: TextStyle(fontSize: 15.sp, color: Colors.white),
- ),
+ height: 40.h,
+ width: 100.w, // 容器宽度
+ // padding: EdgeInsets.symmetric(horizontal: 27.w, vertical: 10.h),
+ alignment: Alignment.center,
+ decoration: BoxDecoration(
+ color: const Color(0xFF00B6F1),
+ borderRadius: BorderRadius.circular(20.r),
+ border: Border.all(
+ width: 1.0,
+ color: const Color(0xFF333333),
),
+ ),
+ child: Text(
+ title,
+ style: TextStyle(fontSize: 15.sp, color: Colors.white),
+ ),
+ ),
));
}
}
--
libgit2 0.22.2