Commit f29687b2fe98680efbe9ac7805cc6e830ef1f8d4
1 parent
18699a34
修复iOS偶现按钮消失问题,练习页面返回按钮尺寸和标题位置
Showing
5 changed files
with
309 additions
and
292 deletions
ios/Runner.xcodeproj/project.pbxproj
| @@ -2327,7 +2327,7 @@ | @@ -2327,7 +2327,7 @@ | ||
| 2327 | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | 2327 | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; |
| 2328 | CODE_SIGN_IDENTITY = "Apple Development"; | 2328 | CODE_SIGN_IDENTITY = "Apple Development"; |
| 2329 | CODE_SIGN_STYLE = Automatic; | 2329 | CODE_SIGN_STYLE = Automatic; |
| 2330 | - CURRENT_PROJECT_VERSION = 11; | 2330 | + CURRENT_PROJECT_VERSION = 12; |
| 2331 | DEVELOPMENT_TEAM = T8P9KW8GWH; | 2331 | DEVELOPMENT_TEAM = T8P9KW8GWH; |
| 2332 | ENABLE_BITCODE = NO; | 2332 | ENABLE_BITCODE = NO; |
| 2333 | INFOPLIST_FILE = Runner/Info.plist; | 2333 | INFOPLIST_FILE = Runner/Info.plist; |
| @@ -2671,7 +2671,7 @@ | @@ -2671,7 +2671,7 @@ | ||
| 2671 | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | 2671 | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; |
| 2672 | CODE_SIGN_IDENTITY = "Apple Development"; | 2672 | CODE_SIGN_IDENTITY = "Apple Development"; |
| 2673 | CODE_SIGN_STYLE = Automatic; | 2673 | CODE_SIGN_STYLE = Automatic; |
| 2674 | - CURRENT_PROJECT_VERSION = 11; | 2674 | + CURRENT_PROJECT_VERSION = 12; |
| 2675 | DEVELOPMENT_TEAM = T8P9KW8GWH; | 2675 | DEVELOPMENT_TEAM = T8P9KW8GWH; |
| 2676 | ENABLE_BITCODE = NO; | 2676 | ENABLE_BITCODE = NO; |
| 2677 | HEADER_SEARCH_PATHS = ( | 2677 | HEADER_SEARCH_PATHS = ( |
| @@ -2876,7 +2876,7 @@ | @@ -2876,7 +2876,7 @@ | ||
| 2876 | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | 2876 | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; |
| 2877 | CODE_SIGN_IDENTITY = "Apple Development"; | 2877 | CODE_SIGN_IDENTITY = "Apple Development"; |
| 2878 | CODE_SIGN_STYLE = Automatic; | 2878 | CODE_SIGN_STYLE = Automatic; |
| 2879 | - CURRENT_PROJECT_VERSION = 11; | 2879 | + CURRENT_PROJECT_VERSION = 12; |
| 2880 | DEVELOPMENT_TEAM = T8P9KW8GWH; | 2880 | DEVELOPMENT_TEAM = T8P9KW8GWH; |
| 2881 | ENABLE_BITCODE = NO; | 2881 | ENABLE_BITCODE = NO; |
| 2882 | INFOPLIST_FILE = Runner/Info.plist; | 2882 | INFOPLIST_FILE = Runner/Info.plist; |
ios/Runner/Info.plist
| @@ -92,16 +92,16 @@ | @@ -92,16 +92,16 @@ | ||
| 92 | <true/> | 92 | <true/> |
| 93 | <key>UISupportedInterfaceOrientations</key> | 93 | <key>UISupportedInterfaceOrientations</key> |
| 94 | <array> | 94 | <array> |
| 95 | - <string>UIInterfaceOrientationPortrait</string> | ||
| 96 | <string>UIInterfaceOrientationLandscapeLeft</string> | 95 | <string>UIInterfaceOrientationLandscapeLeft</string> |
| 97 | <string>UIInterfaceOrientationLandscapeRight</string> | 96 | <string>UIInterfaceOrientationLandscapeRight</string> |
| 97 | + <string>UIInterfaceOrientationPortrait</string> | ||
| 98 | </array> | 98 | </array> |
| 99 | <key>UISupportedInterfaceOrientations~ipad</key> | 99 | <key>UISupportedInterfaceOrientations~ipad</key> |
| 100 | <array> | 100 | <array> |
| 101 | - <string>UIInterfaceOrientationPortrait</string> | ||
| 102 | - <string>UIInterfaceOrientationPortraitUpsideDown</string> | ||
| 103 | <string>UIInterfaceOrientationLandscapeLeft</string> | 101 | <string>UIInterfaceOrientationLandscapeLeft</string> |
| 104 | <string>UIInterfaceOrientationLandscapeRight</string> | 102 | <string>UIInterfaceOrientationLandscapeRight</string> |
| 103 | + <string>UIInterfaceOrientationPortrait</string> | ||
| 104 | + <string>UIInterfaceOrientationPortraitUpsideDown</string> | ||
| 105 | </array> | 105 | </array> |
| 106 | <key>UIViewControllerBasedStatusBarAppearance</key> | 106 | <key>UIViewControllerBasedStatusBarAppearance</key> |
| 107 | <false/> | 107 | <false/> |
ios/Runner/Wowgame/WowGameClasses/WowGameCocosManager.mm
| @@ -48,6 +48,7 @@ static CocosAppDelegate cocosAppDelegate; | @@ -48,6 +48,7 @@ static CocosAppDelegate cocosAppDelegate; | ||
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | - (void)exitGame { | 50 | - (void)exitGame { |
| 51 | + | ||
| 51 | [self.gameViewController dismissViewControllerAnimated:YES completion:nil]; | 52 | [self.gameViewController dismissViewControllerAnimated:YES completion:nil]; |
| 52 | } | 53 | } |
| 53 | 54 | ||
| @@ -102,6 +103,7 @@ static DMProgressHUD *hud; | @@ -102,6 +103,7 @@ static DMProgressHUD *hud; | ||
| 102 | } | 103 | } |
| 103 | 104 | ||
| 104 | -(void)startGameWithID:(NSInteger)gameid { | 105 | -(void)startGameWithID:(NSInteger)gameid { |
| 106 | + [self clearData]; | ||
| 105 | cocos2d::Director::getInstance()->getScheduler()->performFunctionInCocosThread([=] { | 107 | cocos2d::Director::getInstance()->getScheduler()->performFunctionInCocosThread([=] { |
| 106 | // CCLOG("start gameid---> %d ", gameid); | 108 | // CCLOG("start gameid---> %d ", gameid); |
| 107 | cocos2d::EventCustom evtEnter("start_gameid"); | 109 | cocos2d::EventCustom evtEnter("start_gameid"); |
| @@ -117,6 +119,16 @@ static DMProgressHUD *hud; | @@ -117,6 +119,16 @@ static DMProgressHUD *hud; | ||
| 117 | } | 119 | } |
| 118 | 120 | ||
| 119 | 121 | ||
| 122 | +- (void)clearData | ||
| 123 | +{ | ||
| 124 | + cocos2d::SpriteFrameCache::getInstance()->removeSpriteFrames(); | ||
| 125 | + cocos2d::Director::getInstance()->getTextureCache()->removeAllTextures(); | ||
| 126 | + //清理搜索路径 | ||
| 127 | + std::vector<std::string> searchPathArray; | ||
| 128 | + searchPathArray.push_back("res"); | ||
| 129 | + cocos2d::FileUtils::getInstance()->setSearchPaths(searchPathArray); | ||
| 130 | +} | ||
| 131 | + | ||
| 120 | - (void)detoryCocosEnvironment { | 132 | - (void)detoryCocosEnvironment { |
| 121 | 133 | ||
| 122 | } | 134 | } |
lib/pages/practice/topic_picture_page.dart
| @@ -14,7 +14,7 @@ import '../../common/widgets/throttledGesture_gesture_detector.dart'; | @@ -14,7 +14,7 @@ import '../../common/widgets/throttledGesture_gesture_detector.dart'; | ||
| 14 | import 'bloc/topic_picture_bloc.dart'; | 14 | import 'bloc/topic_picture_bloc.dart'; |
| 15 | import 'widgets/practice_header_widget.dart'; | 15 | import 'widgets/practice_header_widget.dart'; |
| 16 | 16 | ||
| 17 | -class TopicPicturePage extends StatelessWidget { | 17 | +class TopicPicturePage extends StatelessWidget { |
| 18 | const TopicPicturePage({super.key, this.courseLessonId}); | 18 | const TopicPicturePage({super.key, this.courseLessonId}); |
| 19 | 19 | ||
| 20 | final String? courseLessonId; | 20 | final String? courseLessonId; |
| @@ -23,20 +23,18 @@ class TopicPicturePage extends StatelessWidget { | @@ -23,20 +23,18 @@ class TopicPicturePage extends StatelessWidget { | ||
| 23 | Widget build(BuildContext context) { | 23 | Widget build(BuildContext context) { |
| 24 | return BlocProvider( | 24 | return BlocProvider( |
| 25 | create: (context) => TopicPictureBloc( | 25 | create: (context) => TopicPictureBloc( |
| 26 | - context, | ||
| 27 | - PageController(), | ||
| 28 | - courseLessonId??'', | 26 | + context, |
| 27 | + PageController(), | ||
| 28 | + courseLessonId ?? '', | ||
| 29 | ) | 29 | ) |
| 30 | ..add(InitBlocEvent()) | 30 | ..add(InitBlocEvent()) |
| 31 | ..add(RequestDataEvent()) | 31 | ..add(RequestDataEvent()) |
| 32 | - ..add(XSVoiceInitEvent( | ||
| 33 | - { | ||
| 34 | - 'appKey':AppConsts.xsAppKey, | ||
| 35 | - 'service':AppConsts.xsAppService, | ||
| 36 | - 'secretKey':AppConsts.xsAppSecretKey, | ||
| 37 | - 'userId':UserUtil.getUser()!.id.toString(), | ||
| 38 | - } | ||
| 39 | - )), | 32 | + ..add(XSVoiceInitEvent({ |
| 33 | + 'appKey': AppConsts.xsAppKey, | ||
| 34 | + 'service': AppConsts.xsAppService, | ||
| 35 | + 'secretKey': AppConsts.xsAppSecretKey, | ||
| 36 | + 'userId': UserUtil.getUser()!.id.toString(), | ||
| 37 | + })), | ||
| 40 | child: _TopicPicturePage(), | 38 | child: _TopicPicturePage(), |
| 41 | ); | 39 | ); |
| 42 | } | 40 | } |
| @@ -45,21 +43,20 @@ class TopicPicturePage extends StatelessWidget { | @@ -45,21 +43,20 @@ class TopicPicturePage extends StatelessWidget { | ||
| 45 | class _TopicPicturePage extends StatelessWidget { | 43 | class _TopicPicturePage extends StatelessWidget { |
| 46 | @override | 44 | @override |
| 47 | Widget build(BuildContext context) { | 45 | Widget build(BuildContext context) { |
| 48 | - return BlocListener<TopicPictureBloc,TopicPictureState>( | ||
| 49 | - listener: (context, state){ | 46 | + return BlocListener<TopicPictureBloc, TopicPictureState>( |
| 47 | + listener: (context, state) { | ||
| 50 | if (state is RequestDataState) { | 48 | if (state is RequestDataState) { |
| 51 | context.read<TopicPictureBloc>().add(CurrentPageIndexChangeEvent(0)); | 49 | context.read<TopicPictureBloc>().add(CurrentPageIndexChangeEvent(0)); |
| 52 | } | 50 | } |
| 53 | - if (state is XSVoiceTestState) { | ||
| 54 | - | ||
| 55 | - } | 51 | + if (state is XSVoiceTestState) {} |
| 56 | }, | 52 | }, |
| 57 | child: _topicPictureView(), | 53 | child: _topicPictureView(), |
| 58 | ); | 54 | ); |
| 59 | } | 55 | } |
| 60 | 56 | ||
| 61 | - Widget _topicPictureView() => BlocBuilder<TopicPictureBloc,TopicPictureState>( | ||
| 62 | - builder: (context,state){ | 57 | + Widget _topicPictureView() => |
| 58 | + BlocBuilder<TopicPictureBloc, TopicPictureState>( | ||
| 59 | + builder: (context, state) { | ||
| 63 | final bloc = BlocProvider.of<TopicPictureBloc>(context); | 60 | final bloc = BlocProvider.of<TopicPictureBloc>(context); |
| 64 | return Container( | 61 | return Container( |
| 65 | color: Colors.white, | 62 | color: Colors.white, |
| @@ -70,14 +67,13 @@ class _TopicPicturePage extends StatelessWidget { | @@ -70,14 +67,13 @@ class _TopicPicturePage extends StatelessWidget { | ||
| 70 | PracticeHeaderWidget( | 67 | PracticeHeaderWidget( |
| 71 | title: '${bloc.currentPage}/${bloc.entity?.topics?.length}', | 68 | title: '${bloc.currentPage}/${bloc.entity?.topics?.length}', |
| 72 | onTap: () { | 69 | onTap: () { |
| 73 | - popPage( | ||
| 74 | - data:{ | ||
| 75 | - 'currentStep':bloc.currentPage, | ||
| 76 | - 'courseLessonId':bloc.courseLessonId, | ||
| 77 | - 'isCompleted': bloc.isLastPage(), | ||
| 78 | - }); | 70 | + popPage(data: { |
| 71 | + 'currentStep': bloc.currentPage, | ||
| 72 | + 'courseLessonId': bloc.courseLessonId, | ||
| 73 | + 'isCompleted': bloc.isLastPage(), | ||
| 74 | + }); | ||
| 79 | // Navigator.pop(context); | 75 | // Navigator.pop(context); |
| 80 | - }, | 76 | + }, |
| 81 | ), | 77 | ), |
| 82 | Expanded( | 78 | Expanded( |
| 83 | child: PageView.builder( | 79 | child: PageView.builder( |
| @@ -87,17 +83,27 @@ class _TopicPicturePage extends StatelessWidget { | @@ -87,17 +83,27 @@ class _TopicPicturePage extends StatelessWidget { | ||
| 87 | onPageChanged: (int index) { | 83 | onPageChanged: (int index) { |
| 88 | bloc.add(CurrentPageIndexChangeEvent(index)); | 84 | bloc.add(CurrentPageIndexChangeEvent(index)); |
| 89 | }, | 85 | }, |
| 90 | - itemBuilder: (BuildContext context,int index){ | ||
| 91 | - CourseProcessTopics? topics = bloc.entity?.topics![index]; | ||
| 92 | - if (topics?.type == TopicType.audioImageSelect.value) {//听音选图 | 86 | + itemBuilder: (BuildContext context, int index) { |
| 87 | + CourseProcessTopics? topics = | ||
| 88 | + bloc.entity?.topics![index]; | ||
| 89 | + if (topics?.type == | ||
| 90 | + TopicType.audioImageSelect.value) { | ||
| 91 | + //听音选图 | ||
| 93 | return _pageViewVoicePictureItemWidget(topics); | 92 | return _pageViewVoicePictureItemWidget(topics); |
| 94 | - } else if (topics?.type == TopicType.audioCharSelect.value) {//听音选字 | 93 | + } else if (topics?.type == |
| 94 | + TopicType.audioCharSelect.value) { | ||
| 95 | + //听音选字 | ||
| 95 | return _pageViewVoiceWordItemWidget(topics); | 96 | return _pageViewVoiceWordItemWidget(topics); |
| 96 | - } else if (topics?.type == TopicType.questionCharSelect.value) {//看题选字 | 97 | + } else if (topics?.type == |
| 98 | + TopicType.questionCharSelect.value) { | ||
| 99 | + //看题选字 | ||
| 97 | return _pageViewWordItemWidget(topics); | 100 | return _pageViewWordItemWidget(topics); |
| 98 | - } else if (topics?.type == TopicType.questionImageSelect.value) {//看题选图 | 101 | + } else if (topics?.type == |
| 102 | + TopicType.questionImageSelect.value) { | ||
| 103 | + //看题选图 | ||
| 99 | return _pageViewItemWidget(topics); | 104 | return _pageViewItemWidget(topics); |
| 100 | - } else {//语音问答 | 105 | + } else { |
| 106 | + //语音问答 | ||
| 101 | return _voiceAnswerItem(topics); | 107 | return _voiceAnswerItem(topics); |
| 102 | } | 108 | } |
| 103 | }), | 109 | }), |
| @@ -108,37 +114,34 @@ class _TopicPicturePage extends StatelessWidget { | @@ -108,37 +114,34 @@ class _TopicPicturePage extends StatelessWidget { | ||
| 108 | left: 0, | 114 | left: 0, |
| 109 | right: 0, | 115 | right: 0, |
| 110 | bottom: 0, | 116 | bottom: 0, |
| 111 | - child: Image.asset('bottom_grass'.assetPng) | ||
| 112 | - ) | 117 | + child: Image.asset('bottom_grass'.assetPng)) |
| 113 | ], | 118 | ], |
| 114 | ), | 119 | ), |
| 115 | ); | 120 | ); |
| 116 | }); | 121 | }); |
| 117 | 122 | ||
| 118 | ///看题选图 | 123 | ///看题选图 |
| 119 | - Widget _pageViewItemWidget(CourseProcessTopics? topics) => BlocBuilder<TopicPictureBloc,TopicPictureState>( | ||
| 120 | - builder: (context, state){ | 124 | + Widget _pageViewItemWidget(CourseProcessTopics? topics) => |
| 125 | + BlocBuilder<TopicPictureBloc, TopicPictureState>( | ||
| 126 | + builder: (context, state) { | ||
| 121 | return SafeArea( | 127 | return SafeArea( |
| 122 | child: Column( | 128 | child: Column( |
| 123 | children: [ | 129 | children: [ |
| 124 | - Text( | ||
| 125 | - topics?.word??'', | 130 | + Text(topics?.word ?? '', |
| 126 | softWrap: true, | 131 | softWrap: true, |
| 127 | style: TextStyle( | 132 | style: TextStyle( |
| 128 | - fontSize: 21.sp, | ||
| 129 | - color: const Color(0xFF333333) | ||
| 130 | - ) | ||
| 131 | - ), | 133 | + fontSize: 21.sp, color: const Color(0xFF333333))), |
| 132 | 26.verticalSpace, | 134 | 26.verticalSpace, |
| 133 | SizedBox( | 135 | SizedBox( |
| 134 | height: 143.h, | 136 | height: 143.h, |
| 135 | - width: 143.w * (topics?.topicAnswerList?.length??0), | 137 | + width: 143.w * (topics?.topicAnswerList?.length ?? 0), |
| 136 | child: ListView.builder( | 138 | child: ListView.builder( |
| 137 | scrollDirection: Axis.horizontal, | 139 | scrollDirection: Axis.horizontal, |
| 138 | physics: const NeverScrollableScrollPhysics(), | 140 | physics: const NeverScrollableScrollPhysics(), |
| 139 | - itemCount: topics?.topicAnswerList?.length??0, | ||
| 140 | - itemBuilder: (context,index){ | ||
| 141 | - return _decodeImageWidget(index,topics?.topicAnswerList?[index]); | 141 | + itemCount: topics?.topicAnswerList?.length ?? 0, |
| 142 | + itemBuilder: (context, index) { | ||
| 143 | + return _decodeImageWidget( | ||
| 144 | + index, topics?.topicAnswerList?[index]); | ||
| 142 | }), | 145 | }), |
| 143 | ), | 146 | ), |
| 144 | ], | 147 | ], |
| @@ -146,65 +149,63 @@ class _TopicPicturePage extends StatelessWidget { | @@ -146,65 +149,63 @@ class _TopicPicturePage extends StatelessWidget { | ||
| 146 | ); | 149 | ); |
| 147 | }); | 150 | }); |
| 148 | 151 | ||
| 149 | - Widget _decodeImageWidget(int index,CourseProcessTopicsTopicAnswerList? answerLis) => BlocBuilder<TopicPictureBloc,TopicPictureState>( | ||
| 150 | - buildWhen: (_, s) => s is SelectItemChangeState, | ||
| 151 | - builder: (context,state){ | ||
| 152 | - final bloc = BlocProvider.of<TopicPictureBloc>(context); | ||
| 153 | - return Container( | ||
| 154 | - padding: EdgeInsets.symmetric(horizontal: 10.w), | ||
| 155 | - child: GestureDetector( | ||
| 156 | - onTap: () => bloc.add(SelectItemEvent(index)), | ||
| 157 | - child: Container( | ||
| 158 | - padding: const EdgeInsets.all(4.5), | ||
| 159 | - decoration: BoxDecoration( | ||
| 160 | - color: bloc.selectItem == index?const Color(0xFF00B6F1):Colors.white, | ||
| 161 | - borderRadius: BorderRadius.circular(15), | ||
| 162 | - ), | ||
| 163 | - height: 143.h, | ||
| 164 | - width: 143.w, | ||
| 165 | - child: Container( | ||
| 166 | - decoration: BoxDecoration( | ||
| 167 | - color: Colors.white, | 152 | + Widget _decodeImageWidget( |
| 153 | + int index, CourseProcessTopicsTopicAnswerList? answerLis) => | ||
| 154 | + BlocBuilder<TopicPictureBloc, TopicPictureState>( | ||
| 155 | + buildWhen: (_, s) => s is SelectItemChangeState, | ||
| 156 | + builder: (context, state) { | ||
| 157 | + final bloc = BlocProvider.of<TopicPictureBloc>(context); | ||
| 158 | + return Container( | ||
| 159 | + padding: EdgeInsets.symmetric(horizontal: 10.w), | ||
| 160 | + child: GestureDetector( | ||
| 161 | + onTap: () => bloc.add(SelectItemEvent(index)), | ||
| 162 | + child: Container( | ||
| 163 | + padding: const EdgeInsets.all(4.5), | ||
| 164 | + decoration: BoxDecoration( | ||
| 165 | + color: bloc.selectItem == index | ||
| 166 | + ? const Color(0xFF00B6F1) | ||
| 167 | + : Colors.white, | ||
| 168 | borderRadius: BorderRadius.circular(15), | 168 | borderRadius: BorderRadius.circular(15), |
| 169 | - border: Border.all( | ||
| 170 | - width: 1.0, | ||
| 171 | - color: const Color(0xFF140C10) | ||
| 172 | - ), | ||
| 173 | - image: DecorationImage( | ||
| 174 | - fit: BoxFit.fitWidth, | ||
| 175 | - image: NetworkImage(answerLis?.picUrl??'') | ||
| 176 | - ) | 169 | + ), |
| 170 | + height: 143.h, | ||
| 171 | + width: 143.w, | ||
| 172 | + child: Container( | ||
| 173 | + decoration: BoxDecoration( | ||
| 174 | + color: Colors.white, | ||
| 175 | + borderRadius: BorderRadius.circular(15), | ||
| 176 | + border: Border.all( | ||
| 177 | + width: 1.0, color: const Color(0xFF140C10)), | ||
| 178 | + image: DecorationImage( | ||
| 179 | + fit: BoxFit.fitWidth, | ||
| 180 | + image: NetworkImage(answerLis?.picUrl ?? ''))), | ||
| 181 | + ), | ||
| 177 | ), | 182 | ), |
| 178 | ), | 183 | ), |
| 179 | - ), | ||
| 180 | - ), | ||
| 181 | - ); | ||
| 182 | - }); | 184 | + ); |
| 185 | + }); | ||
| 183 | 186 | ||
| 184 | ///看题选字 | 187 | ///看题选字 |
| 185 | - Widget _pageViewWordItemWidget(CourseProcessTopics? topics) => BlocBuilder<TopicPictureBloc,TopicPictureState>( | ||
| 186 | - builder: (context, state){ | 188 | + Widget _pageViewWordItemWidget(CourseProcessTopics? topics) => |
| 189 | + BlocBuilder<TopicPictureBloc, TopicPictureState>( | ||
| 190 | + builder: (context, state) { | ||
| 187 | return SafeArea( | 191 | return SafeArea( |
| 188 | child: Column( | 192 | child: Column( |
| 189 | children: [ | 193 | children: [ |
| 190 | - Text( | ||
| 191 | - topics?.word??'', | 194 | + Text(topics?.word ?? '', |
| 192 | softWrap: true, | 195 | softWrap: true, |
| 193 | style: TextStyle( | 196 | style: TextStyle( |
| 194 | - fontSize: 21.sp, | ||
| 195 | - color: const Color(0xFF333333) | ||
| 196 | - ) | ||
| 197 | - ), | 197 | + fontSize: 21.sp, color: const Color(0xFF333333))), |
| 198 | 26.verticalSpace, | 198 | 26.verticalSpace, |
| 199 | SizedBox( | 199 | SizedBox( |
| 200 | height: 143.h, | 200 | height: 143.h, |
| 201 | - width: 143.w * (topics?.topicAnswerList?.length??0), | 201 | + width: 143.w * (topics?.topicAnswerList?.length ?? 0), |
| 202 | child: ListView.builder( | 202 | child: ListView.builder( |
| 203 | scrollDirection: Axis.horizontal, | 203 | scrollDirection: Axis.horizontal, |
| 204 | - itemCount: topics?.topicAnswerList?.length??0, | 204 | + itemCount: topics?.topicAnswerList?.length ?? 0, |
| 205 | physics: const NeverScrollableScrollPhysics(), | 205 | physics: const NeverScrollableScrollPhysics(), |
| 206 | - itemBuilder: (context,index){ | ||
| 207 | - return _decodeWordWidget(index,topics?.topicAnswerList?[index]); | 206 | + itemBuilder: (context, index) { |
| 207 | + return _decodeWordWidget( | ||
| 208 | + index, topics?.topicAnswerList?[index]); | ||
| 208 | }), | 209 | }), |
| 209 | ), | 210 | ), |
| 210 | ], | 211 | ], |
| @@ -212,65 +213,64 @@ class _TopicPicturePage extends StatelessWidget { | @@ -212,65 +213,64 @@ class _TopicPicturePage extends StatelessWidget { | ||
| 212 | ); | 213 | ); |
| 213 | }); | 214 | }); |
| 214 | 215 | ||
| 215 | - Widget _decodeWordWidget(int index,CourseProcessTopicsTopicAnswerList? answerLis) => BlocBuilder<TopicPictureBloc,TopicPictureState>( | ||
| 216 | - buildWhen: (_, s) => s is SelectItemChangeState, | ||
| 217 | - builder: (context,state){ | ||
| 218 | - final bloc = BlocProvider.of<TopicPictureBloc>(context); | ||
| 219 | - return Container( | ||
| 220 | - padding: EdgeInsets.symmetric(horizontal: 10.w), | ||
| 221 | - child: GestureDetector( | ||
| 222 | - onTap: () => bloc.add(SelectItemEvent(index)), | ||
| 223 | - child: Container( | ||
| 224 | - width: 143.w, | ||
| 225 | - height: 143.h, | ||
| 226 | - padding: EdgeInsets.only(left: 13.w,right: 13.w,top: 13.h,bottom: 13.h), | ||
| 227 | - decoration: BoxDecoration( | ||
| 228 | - color: Colors.white, | ||
| 229 | - borderRadius: BorderRadius.circular(15), | ||
| 230 | - border: Border.all( | ||
| 231 | - width: 1.0, | ||
| 232 | - color: const Color(0xFF140C10) | ||
| 233 | - ), | ||
| 234 | - ), | ||
| 235 | - child: Column( | ||
| 236 | - mainAxisAlignment: MainAxisAlignment.end, | ||
| 237 | - children: [ | ||
| 238 | - Expanded( | ||
| 239 | - child: Container( | ||
| 240 | - alignment: Alignment.center, | ||
| 241 | - child: Text( | ||
| 242 | - answerLis?.word??'', | ||
| 243 | - style: TextStyle( | ||
| 244 | - fontSize: 20.sp, | ||
| 245 | - color: const Color(0xFF333333) | ||
| 246 | - ) | ||
| 247 | - ), | ||
| 248 | - ), | 216 | + Widget _decodeWordWidget( |
| 217 | + int index, CourseProcessTopicsTopicAnswerList? answerLis) => | ||
| 218 | + BlocBuilder<TopicPictureBloc, TopicPictureState>( | ||
| 219 | + buildWhen: (_, s) => s is SelectItemChangeState, | ||
| 220 | + builder: (context, state) { | ||
| 221 | + final bloc = BlocProvider.of<TopicPictureBloc>(context); | ||
| 222 | + return Container( | ||
| 223 | + padding: EdgeInsets.symmetric(horizontal: 10.w), | ||
| 224 | + child: GestureDetector( | ||
| 225 | + onTap: () => bloc.add(SelectItemEvent(index)), | ||
| 226 | + child: Container( | ||
| 227 | + width: 143.w, | ||
| 228 | + height: 143.h, | ||
| 229 | + padding: EdgeInsets.only( | ||
| 230 | + left: 13.w, right: 13.w, top: 13.h, bottom: 13.h), | ||
| 231 | + decoration: BoxDecoration( | ||
| 232 | + color: Colors.white, | ||
| 233 | + borderRadius: BorderRadius.circular(15), | ||
| 234 | + border: | ||
| 235 | + Border.all(width: 1.0, color: const Color(0xFF140C10)), | ||
| 249 | ), | 236 | ), |
| 250 | - Container( | ||
| 251 | - height: 30.h, | ||
| 252 | - width: double.infinity, | ||
| 253 | - decoration: BoxDecoration( | ||
| 254 | - color: bloc.selectItem == index?const Color(0xFF00B6F1):Colors.white, | ||
| 255 | - borderRadius: BorderRadius.circular(15.r), | ||
| 256 | - border: Border.all( | ||
| 257 | - width: 1.5, | ||
| 258 | - color: const Color(0xFF140C10) | 237 | + child: Column( |
| 238 | + mainAxisAlignment: MainAxisAlignment.end, | ||
| 239 | + children: [ | ||
| 240 | + Expanded( | ||
| 241 | + child: Container( | ||
| 242 | + alignment: Alignment.center, | ||
| 243 | + child: Text(answerLis?.word ?? '', | ||
| 244 | + style: TextStyle( | ||
| 245 | + fontSize: 20.sp, | ||
| 246 | + color: const Color(0xFF333333))), | ||
| 247 | + ), | ||
| 259 | ), | 248 | ), |
| 260 | - ), | ||
| 261 | - alignment: Alignment.center, | ||
| 262 | - child: Image.asset('choose'.assetPng), | ||
| 263 | - ) | ||
| 264 | - ], | 249 | + Container( |
| 250 | + height: 30.h, | ||
| 251 | + width: double.infinity, | ||
| 252 | + decoration: BoxDecoration( | ||
| 253 | + color: bloc.selectItem == index | ||
| 254 | + ? const Color(0xFF00B6F1) | ||
| 255 | + : Colors.white, | ||
| 256 | + borderRadius: BorderRadius.circular(15.r), | ||
| 257 | + border: Border.all( | ||
| 258 | + width: 1.5, color: const Color(0xFF140C10)), | ||
| 259 | + ), | ||
| 260 | + alignment: Alignment.center, | ||
| 261 | + child: Image.asset('choose'.assetPng), | ||
| 262 | + ) | ||
| 263 | + ], | ||
| 264 | + ), | ||
| 265 | + ), | ||
| 265 | ), | 266 | ), |
| 266 | - ), | ||
| 267 | - ), | ||
| 268 | - ); | ||
| 269 | - }); | 267 | + ); |
| 268 | + }); | ||
| 270 | 269 | ||
| 271 | ///听音选图 | 270 | ///听音选图 |
| 272 | - Widget _pageViewVoicePictureItemWidget(CourseProcessTopics? topics) => BlocBuilder<TopicPictureBloc,TopicPictureState>( | ||
| 273 | - builder: (context, state){ | 271 | + Widget _pageViewVoicePictureItemWidget(CourseProcessTopics? topics) => |
| 272 | + BlocBuilder<TopicPictureBloc, TopicPictureState>( | ||
| 273 | + builder: (context, state) { | ||
| 274 | final bloc = BlocProvider.of<TopicPictureBloc>(context); | 274 | final bloc = BlocProvider.of<TopicPictureBloc>(context); |
| 275 | return SafeArea( | 275 | return SafeArea( |
| 276 | child: Column( | 276 | child: Column( |
| @@ -283,101 +283,101 @@ class _TopicPicturePage extends StatelessWidget { | @@ -283,101 +283,101 @@ class _TopicPicturePage extends StatelessWidget { | ||
| 283 | bloc.add(VoicePlayEvent()); | 283 | bloc.add(VoicePlayEvent()); |
| 284 | }, | 284 | }, |
| 285 | child: Image.asset( | 285 | child: Image.asset( |
| 286 | - bloc.voicePlayState == VoicePlayState.playing?'reade_answer'.assetGif:'voice'.assetPng, | 286 | + bloc.voicePlayState == VoicePlayState.playing |
| 287 | + ? 'reade_answer'.assetGif | ||
| 288 | + : 'voice'.assetPng, | ||
| 287 | height: 33.h, | 289 | height: 33.h, |
| 288 | width: 30.w, | 290 | width: 30.w, |
| 289 | ), | 291 | ), |
| 290 | ), | 292 | ), |
| 291 | 10.horizontalSpace, | 293 | 10.horizontalSpace, |
| 292 | - Text( | ||
| 293 | - topics?.word??'', | 294 | + Text(topics?.word ?? '', |
| 294 | style: TextStyle( | 295 | style: TextStyle( |
| 295 | - fontSize: 20.sp, | ||
| 296 | - color: const Color(0xFF333333) | ||
| 297 | - ) | ||
| 298 | - ) | 296 | + fontSize: 20.sp, color: const Color(0xFF333333))) |
| 299 | ], | 297 | ], |
| 300 | ), | 298 | ), |
| 301 | 26.verticalSpace, | 299 | 26.verticalSpace, |
| 302 | SizedBox( | 300 | SizedBox( |
| 303 | height: 143.h, | 301 | height: 143.h, |
| 304 | - width: 163.w * (topics?.topicAnswerList?.length??0), | 302 | + width: 163.w * (topics?.topicAnswerList?.length ?? 0), |
| 305 | child: ListView.builder( | 303 | child: ListView.builder( |
| 306 | scrollDirection: Axis.horizontal, | 304 | scrollDirection: Axis.horizontal, |
| 307 | physics: const NeverScrollableScrollPhysics(), | 305 | physics: const NeverScrollableScrollPhysics(), |
| 308 | - itemCount: topics?.topicAnswerList?.length??0, | ||
| 309 | - itemBuilder: (BuildContext context,int index){ | ||
| 310 | - return _decodeVoiceImageWidget(index,topics?.topicAnswerList?[index]); | ||
| 311 | - }) | ||
| 312 | - , | 306 | + itemCount: topics?.topicAnswerList?.length ?? 0, |
| 307 | + itemBuilder: (BuildContext context, int index) { | ||
| 308 | + return _decodeVoiceImageWidget( | ||
| 309 | + index, topics?.topicAnswerList?[index]); | ||
| 310 | + }), | ||
| 313 | ) | 311 | ) |
| 314 | ], | 312 | ], |
| 315 | ), | 313 | ), |
| 316 | ); | 314 | ); |
| 317 | }); | 315 | }); |
| 318 | 316 | ||
| 319 | - Widget _decodeVoiceImageWidget(int index,CourseProcessTopicsTopicAnswerList? answerList) => BlocBuilder<TopicPictureBloc,TopicPictureState>( | ||
| 320 | - buildWhen: (_, s) => s is SelectItemChangeState, | ||
| 321 | - builder: (context,state){ | ||
| 322 | - final bloc = BlocProvider.of<TopicPictureBloc>(context); | ||
| 323 | - return Container( | ||
| 324 | - padding: EdgeInsets.symmetric(horizontal: 10.w), | ||
| 325 | - child: GestureDetector( | ||
| 326 | - onTap: () => bloc.add(SelectItemEvent(index)), | ||
| 327 | - child: Container( | ||
| 328 | - padding: const EdgeInsets.all(4.5), | ||
| 329 | - decoration: BoxDecoration( | ||
| 330 | - color: bloc.selectItem == index?const Color(0xFF00B6F1):Colors.white, | ||
| 331 | - borderRadius: BorderRadius.circular(15), | ||
| 332 | - ), | ||
| 333 | - height: 143.h, | ||
| 334 | - width: 143.w, | ||
| 335 | - child: Container( | ||
| 336 | - decoration: BoxDecoration( | ||
| 337 | - color: Colors.white, | 317 | + Widget _decodeVoiceImageWidget( |
| 318 | + int index, CourseProcessTopicsTopicAnswerList? answerList) => | ||
| 319 | + BlocBuilder<TopicPictureBloc, TopicPictureState>( | ||
| 320 | + buildWhen: (_, s) => s is SelectItemChangeState, | ||
| 321 | + builder: (context, state) { | ||
| 322 | + final bloc = BlocProvider.of<TopicPictureBloc>(context); | ||
| 323 | + return Container( | ||
| 324 | + padding: EdgeInsets.symmetric(horizontal: 10.w), | ||
| 325 | + child: GestureDetector( | ||
| 326 | + onTap: () => bloc.add(SelectItemEvent(index)), | ||
| 327 | + child: Container( | ||
| 328 | + padding: const EdgeInsets.all(4.5), | ||
| 329 | + decoration: BoxDecoration( | ||
| 330 | + color: bloc.selectItem == index | ||
| 331 | + ? const Color(0xFF00B6F1) | ||
| 332 | + : Colors.white, | ||
| 338 | borderRadius: BorderRadius.circular(15), | 333 | borderRadius: BorderRadius.circular(15), |
| 339 | - border: Border.all( | ||
| 340 | - width: 1.0, | ||
| 341 | - color: const Color(0xFF140C10) | ||
| 342 | - ), | ||
| 343 | - image: DecorationImage( | ||
| 344 | - fit: BoxFit.fitWidth, | ||
| 345 | - image: NetworkImage(answerList?.picUrl??'') | ||
| 346 | - ) | 334 | + ), |
| 335 | + height: 143.h, | ||
| 336 | + width: 143.w, | ||
| 337 | + child: Container( | ||
| 338 | + decoration: BoxDecoration( | ||
| 339 | + color: Colors.white, | ||
| 340 | + borderRadius: BorderRadius.circular(15), | ||
| 341 | + border: Border.all( | ||
| 342 | + width: 1.0, color: const Color(0xFF140C10)), | ||
| 343 | + image: DecorationImage( | ||
| 344 | + fit: BoxFit.fitWidth, | ||
| 345 | + image: NetworkImage(answerList?.picUrl ?? ''))), | ||
| 346 | + ), | ||
| 347 | ), | 347 | ), |
| 348 | ), | 348 | ), |
| 349 | - ), | ||
| 350 | - ), | ||
| 351 | - ); | ||
| 352 | - }); | 349 | + ); |
| 350 | + }); | ||
| 353 | 351 | ||
| 354 | ///听音选字 | 352 | ///听音选字 |
| 355 | - Widget _pageViewVoiceWordItemWidget(CourseProcessTopics? topics) => BlocBuilder<TopicPictureBloc,TopicPictureState>( | ||
| 356 | - builder: (context, state){ | 353 | + Widget _pageViewVoiceWordItemWidget(CourseProcessTopics? topics) => |
| 354 | + BlocBuilder<TopicPictureBloc, TopicPictureState>( | ||
| 355 | + builder: (context, state) { | ||
| 357 | final bloc = BlocProvider.of<TopicPictureBloc>(context); | 356 | final bloc = BlocProvider.of<TopicPictureBloc>(context); |
| 358 | return SafeArea( | 357 | return SafeArea( |
| 359 | child: Column( | 358 | child: Column( |
| 360 | children: [ | 359 | children: [ |
| 361 | GestureDetector( | 360 | GestureDetector( |
| 362 | - onTap: () { | ||
| 363 | - bloc.add(VoicePlayEvent()); | ||
| 364 | - }, | ||
| 365 | - child: Image.asset( | ||
| 366 | - bloc.voicePlayState == VoicePlayState.playing?'reade_answer'.assetGif:'voice'.assetPng, | ||
| 367 | - height: 33.h, | ||
| 368 | - width: 30.w | ||
| 369 | - ) | ||
| 370 | - ), | 361 | + onTap: () { |
| 362 | + bloc.add(VoicePlayEvent()); | ||
| 363 | + }, | ||
| 364 | + child: Image.asset( | ||
| 365 | + bloc.voicePlayState == VoicePlayState.playing | ||
| 366 | + ? 'reade_answer'.assetGif | ||
| 367 | + : 'voice'.assetPng, | ||
| 368 | + height: 33.h, | ||
| 369 | + width: 30.w)), | ||
| 371 | 26.verticalSpace, | 370 | 26.verticalSpace, |
| 372 | SizedBox( | 371 | SizedBox( |
| 373 | - width: 163.w * (topics?.topicAnswerList?.length??0), | 372 | + width: 163.w * (topics?.topicAnswerList?.length ?? 0), |
| 374 | height: 143.h, | 373 | height: 143.h, |
| 375 | child: ListView.builder( | 374 | child: ListView.builder( |
| 376 | scrollDirection: Axis.horizontal, | 375 | scrollDirection: Axis.horizontal, |
| 377 | itemCount: topics?.topicAnswerList?.length, | 376 | itemCount: topics?.topicAnswerList?.length, |
| 378 | physics: const NeverScrollableScrollPhysics(), | 377 | physics: const NeverScrollableScrollPhysics(), |
| 379 | - itemBuilder: (BuildContext context,int index){ | ||
| 380 | - return _decodeVoiceWordImageWidget(index, topics!.topicAnswerList![index]); | 378 | + itemBuilder: (BuildContext context, int index) { |
| 379 | + return _decodeVoiceWordImageWidget( | ||
| 380 | + index, topics!.topicAnswerList![index]); | ||
| 381 | }), | 381 | }), |
| 382 | ), | 382 | ), |
| 383 | ], | 383 | ], |
| @@ -385,73 +385,72 @@ class _TopicPicturePage extends StatelessWidget { | @@ -385,73 +385,72 @@ class _TopicPicturePage extends StatelessWidget { | ||
| 385 | ); | 385 | ); |
| 386 | }); | 386 | }); |
| 387 | 387 | ||
| 388 | - Widget _decodeVoiceWordImageWidget(int index,CourseProcessTopicsTopicAnswerList answerList) => BlocBuilder<TopicPictureBloc,TopicPictureState>( | ||
| 389 | - buildWhen: (_, s) => s is SelectItemChangeState, | ||
| 390 | - builder: (context,state){ | ||
| 391 | - final bloc = BlocProvider.of<TopicPictureBloc>(context); | ||
| 392 | - return GestureDetector( | ||
| 393 | - onTap: () => bloc.add(SelectItemEvent(index)), | ||
| 394 | - child: Container( | ||
| 395 | - width: 163.w, | ||
| 396 | - height: 143.h, | ||
| 397 | - padding: EdgeInsets.symmetric(horizontal: 10.w), | ||
| 398 | - child: Container( | ||
| 399 | - width: 143.w, | ||
| 400 | - height: 143.h, | ||
| 401 | - padding: EdgeInsets.only(left: 13.w,right: 13.w,top: 13.h,bottom: 13.h), | ||
| 402 | - decoration: BoxDecoration( | ||
| 403 | - color: Colors.white, | ||
| 404 | - borderRadius: BorderRadius.circular(15), | ||
| 405 | - border: Border.all( | ||
| 406 | - width: 1.0, | ||
| 407 | - color: const Color(0xFF140C10) | ||
| 408 | - ), | ||
| 409 | - ), | ||
| 410 | - child: Column( | ||
| 411 | - mainAxisAlignment: MainAxisAlignment.end, | ||
| 412 | - children: [ | ||
| 413 | - Expanded( | ||
| 414 | - child: Container( | ||
| 415 | - alignment: Alignment.center, | ||
| 416 | - child: Text( | ||
| 417 | - answerList.word??'', | ||
| 418 | - style: TextStyle( | ||
| 419 | - fontSize: 20.sp, | ||
| 420 | - color: const Color(0xFF333333) | ||
| 421 | - ) | ||
| 422 | - ), | ||
| 423 | - ), | 388 | + Widget _decodeVoiceWordImageWidget( |
| 389 | + int index, CourseProcessTopicsTopicAnswerList answerList) => | ||
| 390 | + BlocBuilder<TopicPictureBloc, TopicPictureState>( | ||
| 391 | + buildWhen: (_, s) => s is SelectItemChangeState, | ||
| 392 | + builder: (context, state) { | ||
| 393 | + final bloc = BlocProvider.of<TopicPictureBloc>(context); | ||
| 394 | + return GestureDetector( | ||
| 395 | + onTap: () => bloc.add(SelectItemEvent(index)), | ||
| 396 | + child: Container( | ||
| 397 | + width: 163.w, | ||
| 398 | + height: 143.h, | ||
| 399 | + padding: EdgeInsets.symmetric(horizontal: 10.w), | ||
| 400 | + child: Container( | ||
| 401 | + width: 143.w, | ||
| 402 | + height: 143.h, | ||
| 403 | + padding: EdgeInsets.only( | ||
| 404 | + left: 13.w, right: 13.w, top: 13.h, bottom: 13.h), | ||
| 405 | + decoration: BoxDecoration( | ||
| 406 | + color: Colors.white, | ||
| 407 | + borderRadius: BorderRadius.circular(15), | ||
| 408 | + border: | ||
| 409 | + Border.all(width: 1.0, color: const Color(0xFF140C10)), | ||
| 424 | ), | 410 | ), |
| 425 | - Container( | ||
| 426 | - height: 30.h, | ||
| 427 | - width: double.infinity, | ||
| 428 | - decoration: BoxDecoration( | ||
| 429 | - color: bloc.selectItem == index?const Color(0xFF00B6F1):Colors.white, | ||
| 430 | - borderRadius: BorderRadius.circular(15.r), | ||
| 431 | - border: Border.all( | ||
| 432 | - width: 1.5, | ||
| 433 | - color: const Color(0xFF140C10) | 411 | + child: Column( |
| 412 | + mainAxisAlignment: MainAxisAlignment.end, | ||
| 413 | + children: [ | ||
| 414 | + Expanded( | ||
| 415 | + child: Container( | ||
| 416 | + alignment: Alignment.center, | ||
| 417 | + child: Text(answerList.word ?? '', | ||
| 418 | + style: TextStyle( | ||
| 419 | + fontSize: 20.sp, | ||
| 420 | + color: const Color(0xFF333333))), | ||
| 421 | + ), | ||
| 434 | ), | 422 | ), |
| 435 | - ), | ||
| 436 | - alignment: Alignment.center, | ||
| 437 | - child: Image.asset('choose'.assetPng), | ||
| 438 | - ) | ||
| 439 | - ], | 423 | + Container( |
| 424 | + height: 30.h, | ||
| 425 | + width: double.infinity, | ||
| 426 | + decoration: BoxDecoration( | ||
| 427 | + color: bloc.selectItem == index | ||
| 428 | + ? const Color(0xFF00B6F1) | ||
| 429 | + : Colors.white, | ||
| 430 | + borderRadius: BorderRadius.circular(15.r), | ||
| 431 | + border: Border.all( | ||
| 432 | + width: 1.5, color: const Color(0xFF140C10)), | ||
| 433 | + ), | ||
| 434 | + alignment: Alignment.center, | ||
| 435 | + child: Image.asset('choose'.assetPng), | ||
| 436 | + ) | ||
| 437 | + ], | ||
| 438 | + ), | ||
| 439 | + ), | ||
| 440 | ), | 440 | ), |
| 441 | - ), | ||
| 442 | - ), | ||
| 443 | - ); | ||
| 444 | - }); | 441 | + ); |
| 442 | + }); | ||
| 445 | 443 | ||
| 446 | ///语音问答 | 444 | ///语音问答 |
| 447 | - Widget _voiceAnswerItem(CourseProcessTopics? topics) => BlocBuilder<TopicPictureBloc,TopicPictureState>( | ||
| 448 | - builder: (context, state) { | 445 | + Widget _voiceAnswerItem(CourseProcessTopics? topics) => |
| 446 | + BlocBuilder<TopicPictureBloc, TopicPictureState>( | ||
| 447 | + builder: (context, state) { | ||
| 449 | final bloc = BlocProvider.of<TopicPictureBloc>(context); | 448 | final bloc = BlocProvider.of<TopicPictureBloc>(context); |
| 450 | return Row( | 449 | return Row( |
| 451 | mainAxisAlignment: MainAxisAlignment.center, | 450 | mainAxisAlignment: MainAxisAlignment.center, |
| 452 | children: [ | 451 | children: [ |
| 453 | OwImageWidget( | 452 | OwImageWidget( |
| 454 | - name:topics?.picUrl??'', | 453 | + name: topics?.picUrl ?? '', |
| 455 | height: 186.h, | 454 | height: 186.h, |
| 456 | width: 186.w, | 455 | width: 186.w, |
| 457 | ), | 456 | ), |
| @@ -470,12 +469,14 @@ class _TopicPicturePage extends StatelessWidget { | @@ -470,12 +469,14 @@ class _TopicPicturePage extends StatelessWidget { | ||
| 470 | child: Row( | 469 | child: Row( |
| 471 | children: [ | 470 | children: [ |
| 472 | Image.asset( | 471 | Image.asset( |
| 473 | - bloc.voicePlayState == VoicePlayState.playing?'reade_answer'.assetGif:'voice'.assetPng, | 472 | + bloc.voicePlayState == VoicePlayState.playing |
| 473 | + ? 'reade_answer'.assetGif | ||
| 474 | + : 'voice'.assetPng, | ||
| 474 | height: 52.h, | 475 | height: 52.h, |
| 475 | width: 46.w, | 476 | width: 46.w, |
| 476 | ), | 477 | ), |
| 477 | 10.horizontalSpace, | 478 | 10.horizontalSpace, |
| 478 | - Text(topics?.word??'') | 479 | + Text(topics?.word ?? '') |
| 479 | ], | 480 | ], |
| 480 | ), | 481 | ), |
| 481 | ), | 482 | ), |
| @@ -494,13 +495,17 @@ class _TopicPicturePage extends StatelessWidget { | @@ -494,13 +495,17 @@ class _TopicPicturePage extends StatelessWidget { | ||
| 494 | } | 495 | } |
| 495 | if (topics?.type == TopicType.voiceQuestion.value || | 496 | if (topics?.type == TopicType.voiceQuestion.value || |
| 496 | topics?.type == TopicType.voiceWord.value) { | 497 | topics?.type == TopicType.voiceWord.value) { |
| 497 | - bloc.add(XSVoiceStartEvent(topics?.keyWord??'', '0',UserUtil.getUser()!.id.toString())); | 498 | + bloc.add(XSVoiceStartEvent(topics?.keyWord ?? '', '0', |
| 499 | + UserUtil.getUser()!.id.toString())); | ||
| 498 | } else { | 500 | } else { |
| 499 | - bloc.add(XSVoiceStartEvent(topics?.word??'', '0',UserUtil.getUser()!.id.toString())); | 501 | + bloc.add(XSVoiceStartEvent(topics?.word ?? '', '0', |
| 502 | + UserUtil.getUser()!.id.toString())); | ||
| 500 | } | 503 | } |
| 501 | }, | 504 | }, |
| 502 | child: Image.asset( | 505 | child: Image.asset( |
| 503 | - bloc.isVoicing?'micro_phone'.assetGif:'micro_phone'.assetPng, | 506 | + bloc.isVoicing |
| 507 | + ? 'micro_phone'.assetGif | ||
| 508 | + : 'micro_phone'.assetPng, | ||
| 504 | height: 75.w, | 509 | height: 75.w, |
| 505 | width: 75.w, | 510 | width: 75.w, |
| 506 | ), | 511 | ), |
lib/pages/practice/widgets/practice_header_widget.dart
| @@ -13,35 +13,35 @@ class PracticeHeaderWidget extends StatelessWidget { | @@ -13,35 +13,35 @@ class PracticeHeaderWidget extends StatelessWidget { | ||
| 13 | Widget build(BuildContext context) { | 13 | Widget build(BuildContext context) { |
| 14 | return Container( | 14 | return Container( |
| 15 | color: Colors.white, | 15 | color: Colors.white, |
| 16 | - height: kToolbarHeight, | 16 | + height: kToolbarHeight + 3.h, |
| 17 | child: AppBar( | 17 | child: AppBar( |
| 18 | - leading: IconButton( | ||
| 19 | - icon: Image.asset( | 18 | + leading: GestureDetector( |
| 19 | + child: Image.asset( | ||
| 20 | 'back_around'.assetPng, | 20 | 'back_around'.assetPng, |
| 21 | - width: 40, | ||
| 22 | - height: 40, | 21 | + width: 40.w, |
| 22 | + height: 40.h, | ||
| 23 | ), | 23 | ), |
| 24 | - onPressed: () { | ||
| 25 | - onTap(); | ||
| 26 | - }, | 24 | + onTap: () => {onTap()}, |
| 27 | ), | 25 | ), |
| 28 | centerTitle: true, | 26 | centerTitle: true, |
| 29 | title: Container( | 27 | title: Container( |
| 30 | - height: 40.h, | ||
| 31 | - padding: EdgeInsets.symmetric(horizontal: 27.w, vertical: 6.h), | ||
| 32 | - decoration: BoxDecoration( | ||
| 33 | - color: const Color(0xFF00B6F1), | ||
| 34 | - borderRadius: BorderRadius.circular(20.r), | ||
| 35 | - border: Border.all( | ||
| 36 | - width: 1.0, | ||
| 37 | - color: const Color(0xFF333333), | ||
| 38 | - ), | ||
| 39 | - ), | ||
| 40 | - child: Text( | ||
| 41 | - title, | ||
| 42 | - style: TextStyle(fontSize: 15.sp, color: Colors.white), | ||
| 43 | - ), | 28 | + height: 40.h, |
| 29 | + width: 100.w, // 容器宽度 | ||
| 30 | + // padding: EdgeInsets.symmetric(horizontal: 27.w, vertical: 10.h), | ||
| 31 | + alignment: Alignment.center, | ||
| 32 | + decoration: BoxDecoration( | ||
| 33 | + color: const Color(0xFF00B6F1), | ||
| 34 | + borderRadius: BorderRadius.circular(20.r), | ||
| 35 | + border: Border.all( | ||
| 36 | + width: 1.0, | ||
| 37 | + color: const Color(0xFF333333), | ||
| 44 | ), | 38 | ), |
| 39 | + ), | ||
| 40 | + child: Text( | ||
| 41 | + title, | ||
| 42 | + style: TextStyle(fontSize: 15.sp, color: Colors.white), | ||
| 43 | + ), | ||
| 44 | + ), | ||
| 45 | )); | 45 | )); |
| 46 | } | 46 | } |
| 47 | } | 47 | } |