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