From b8c7d62c8c7e341807f5cb48bb58ee458e99a157 Mon Sep 17 00:00:00 2001 From: akhdanre Date: Sun, 18 May 2025 22:12:23 +0700 Subject: [PATCH] fix: the quiz answering and add loading on the join quiz --- .../controller/join_room_controller.dart | 12 +++++++++-- .../join_room/view/join_room_view.dart | 21 ------------------- .../controller/play_quiz_controller.dart | 6 ++---- .../view/play_quiz_multiplayer.dart | 4 ++-- 4 files changed, 14 insertions(+), 29 deletions(-) diff --git a/lib/feature/join_room/controller/join_room_controller.dart b/lib/feature/join_room/controller/join_room_controller.dart index 4306f53..611dc7c 100644 --- a/lib/feature/join_room/controller/join_room_controller.dart +++ b/lib/feature/join_room/controller/join_room_controller.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:quiz_app/app/routes/app_pages.dart'; -import 'package:quiz_app/core/utils/logger.dart'; +import 'package:quiz_app/core/utils/custom_floating_loading.dart'; import 'package:quiz_app/data/controllers/user_controller.dart'; import 'package:quiz_app/data/dto/waiting_room_dto.dart'; import 'package:quiz_app/data/models/quiz/quiz_info_model.dart'; @@ -29,11 +29,18 @@ class JoinRoomController extends GetxController { ); return; } + CustomFloatingLoading.showLoadingDialog(Get.context!); _socketService.initSocketConnection(); _socketService.joinRoom(sessionCode: code, userId: _userController.userData!.id); _socketService.errors.listen((error) { - logC.i(error); + Get.snackbar( + "not found", + "Ruangan tidak ditemukan", + backgroundColor: Get.theme.colorScheme.error.withValues(alpha: 0.9), + colorText: Colors.white, + ); + CustomFloatingLoading.hideLoadingDialog(Get.context!); }); _socketService.roomMessages.listen((data) { @@ -42,6 +49,7 @@ class JoinRoomController extends GetxController { final Map sessionInfoJson = dataPayload["session_info"]; final Map quizInfoJson = dataPayload["quiz_info"]; + CustomFloatingLoading.hideLoadingDialog(Get.context!); Get.toNamed( AppRoutes.waitRoomPage, arguments: WaitingRoomDTO( diff --git a/lib/feature/join_room/view/join_room_view.dart b/lib/feature/join_room/view/join_room_view.dart index 45215a1..3fa9f69 100644 --- a/lib/feature/join_room/view/join_room_view.dart +++ b/lib/feature/join_room/view/join_room_view.dart @@ -190,27 +190,6 @@ class JoinRoomView extends GetView { ), const SizedBox(height: 30), - - // TweenAnimationBuilder( - // duration: const Duration(milliseconds: 800), - // tween: Tween(begin: 0.0, end: 1.0), - // builder: (context, value, child) { - // return Opacity( - // opacity: value, - // child: child, - // ); - // }, - // child: TextButton( - // onPressed: () {}, - // child: Text( - // context.tr("create_new_room"), - // style: TextStyle( - // color: AppColors.primaryBlue, - // fontWeight: FontWeight.w500, - // ), - // ), - // ), - // ), ], ), ), diff --git a/lib/feature/play_quiz_multiplayer/controller/play_quiz_controller.dart b/lib/feature/play_quiz_multiplayer/controller/play_quiz_controller.dart index 1a20595..f7f7ba3 100644 --- a/lib/feature/play_quiz_multiplayer/controller/play_quiz_controller.dart +++ b/lib/feature/play_quiz_multiplayer/controller/play_quiz_controller.dart @@ -57,13 +57,11 @@ class PlayQuizMultiplayerController extends GetxController { final model = MultiplayerQuestionModel.fromJson(Map.from(data)); currentQuestion.value = model; - // Start the timer for this question _startTimer(model.duration); }); _socketService.quizDone.listen((_) { isDone.value = true; - // Cancel timer when quiz is done _cancelTimer(); }); } @@ -98,8 +96,8 @@ class PlayQuizMultiplayerController extends GetxController { _timer = null; } - void selectOptionAnswer(String option) { - selectedAnswer.value = option; + void selectOptionAnswer(int choosenIndex) { + selectedAnswer.value = choosenIndex.toString(); buttonType.value = ButtonType.primary; } diff --git a/lib/feature/play_quiz_multiplayer/view/play_quiz_multiplayer.dart b/lib/feature/play_quiz_multiplayer/view/play_quiz_multiplayer.dart index 9368abb..afc32f9 100644 --- a/lib/feature/play_quiz_multiplayer/view/play_quiz_multiplayer.dart +++ b/lib/feature/play_quiz_multiplayer/view/play_quiz_multiplayer.dart @@ -160,7 +160,7 @@ class PlayQuizMultiplayerView extends GetView { return Column( children: List.generate(options!.length, (index) { final option = options[index]; - final isSelected = controller.selectedAnswer.value == option; + final isSelected = controller.selectedAnswer.value == index.toString(); return Container( margin: const EdgeInsets.only(bottom: 12), @@ -173,7 +173,7 @@ class PlayQuizMultiplayerView extends GetView { padding: const EdgeInsets.symmetric(vertical: 14), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), ), - onPressed: () => controller.selectOptionAnswer(option), + onPressed: () => controller.selectOptionAnswer(index), child: Text(option), ), );