diff --git a/assets/svg/close.svg b/assets/svg/close.svg
new file mode 100644
index 0000000..6d8fa28
--- /dev/null
+++ b/assets/svg/close.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/svg/done.svg b/assets/svg/done.svg
new file mode 100644
index 0000000..dcf1527
--- /dev/null
+++ b/assets/svg/done.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/svg/polygon.svg b/assets/svg/polygon.svg
new file mode 100644
index 0000000..a5ad9f3
--- /dev/null
+++ b/assets/svg/polygon.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/svg/timer.svg b/assets/svg/timer.svg
new file mode 100644
index 0000000..2c3297d
--- /dev/null
+++ b/assets/svg/timer.svg
@@ -0,0 +1,38 @@
+
diff --git a/lib/common_ui/resources/my_assets.dart b/lib/common_ui/resources/my_assets.dart
index 7e76912..5bd452a 100644
--- a/lib/common_ui/resources/my_assets.dart
+++ b/lib/common_ui/resources/my_assets.dart
@@ -70,6 +70,10 @@ class MyAssets {
static const String iconRandom = 'assets/svg/icon_random.svg';
static const String magnifier = 'assets/svg/magnifier.svg';
static const String iconIran = 'assets/svg/icon_iran.svg';
+ static const String polygon = 'assets/svg/polygon.svg';
+ static const String close = 'assets/svg/close.svg';
+ static const String doneWhite = 'assets/svg/done.svg';
+ static const String timer = 'assets/svg/timer.svg';
/// ----- Audios -----
static const String sampleAudio = 'assets/audios/sample.mp3';
diff --git a/lib/core/params/bl_question_params.dart b/lib/core/params/bl_question_params.dart
new file mode 100644
index 0000000..aea905b
--- /dev/null
+++ b/lib/core/params/bl_question_params.dart
@@ -0,0 +1,13 @@
+class BLQuestionParams {
+ int? id;
+
+ BLQuestionParams({this.id});
+
+ BLQuestionParams copyWith({
+ int? id,
+ }) {
+ return BLQuestionParams(
+ id: id ?? this.id,
+ );
+ }
+}
diff --git a/lib/core/routers/my_routes.dart b/lib/core/routers/my_routes.dart
index 3116ea5..e3dfcf1 100644
--- a/lib/core/routers/my_routes.dart
+++ b/lib/core/routers/my_routes.dart
@@ -1,7 +1,12 @@
import 'package:shia_game_flutter/features/awards/presentation/binding/awards_binding.dart';
import 'package:shia_game_flutter/features/awards/presentation/ui/awards_page.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/battle_league_finding_page.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/battle_league_founded_page.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/binding/battle_league_binding.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/battle_league_finding_page.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/battle_league_founded_page.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/battle_league_page.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/battle_league_topic_page.dart';
+import 'package:shia_game_flutter/features/battle_league/question_part/bl_question/presentation/binding/bl_question_binding.dart';
+import 'package:shia_game_flutter/features/battle_league/question_part/bl_question/presentation/ui/bl_question_page.dart';
import 'package:shia_game_flutter/features/home/presentation/binding/home_binding.dart';
import 'package:shia_game_flutter/features/home/presentation/pages/home_page.dart';
import 'package:shia_game_flutter/features/intro/presentation/binding/intro_binding.dart';
@@ -12,12 +17,9 @@ import 'package:shia_game_flutter/features/profile/presentation/binding/profile_
import 'package:shia_game_flutter/features/profile/presentation/ui/profile_page.dart';
import 'package:shia_game_flutter/features/sample/presentation/binding/sample_binding.dart';
import 'package:shia_game_flutter/features/sample/presentation/ui/sample_page.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/binding/battle_league_binding.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/battle_league_page.dart';
import 'package:get/get.dart';
import 'package:shia_game_flutter/features/shop/presentation/binding/shop_binding.dart';
import 'package:shia_game_flutter/features/shop/presentation/ui/shop_page.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/battle_league_topic_page.dart';
class Routes {
static const Routes _i = Routes._internal();
@@ -37,6 +39,7 @@ class Routes {
static const String battleLeagueTopicPage = '/battle_league_topic_page';
static const String battleLeagueFindingPage = '/battle_league_finding_page';
static const String battleLeagueFoundedPage = '/battle_league_founded_page';
+ static const String battleLeagueQuestionPage = '/battle_league_question_page';
}
final List appPages = [
@@ -97,4 +100,9 @@ final List appPages = [
page: () => const BattleLeagueFoundedPage(),
binding: BattleLeagueBinding(),
),
+ GetPage(
+ name: Routes.battleLeagueQuestionPage,
+ page: () => const BLQuestionPage(),
+ binding: BLQuestionBinding(),
+ ),
];
diff --git a/lib/core/widgets/stepper/my_stepper.dart b/lib/core/widgets/stepper/my_stepper.dart
new file mode 100644
index 0000000..7564628
--- /dev/null
+++ b/lib/core/widgets/stepper/my_stepper.dart
@@ -0,0 +1,41 @@
+import 'package:flutter/material.dart';
+import 'package:shia_game_flutter/core/utils/screen_size.dart';
+import 'package:shia_game_flutter/core/widgets/stepper/styles/my_step_default_item.dart';
+
+class MyStepper extends StatelessWidget {
+ const MyStepper({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ height: 30.h,
+ width: context.widthScreen,
+ alignment: Alignment.center,
+ padding: EdgeInsets.symmetric(horizontal: 16.w),
+ decoration: const ShapeDecoration(
+ shape: StadiumBorder(),
+ color: Color(0XFF3A1570),
+ ),
+ child: Stack(
+ alignment: Alignment.center,
+ children: [
+ Container(
+ height: 3.h,
+ width: context.widthScreen,
+ decoration: const ShapeDecoration(
+ shape: StadiumBorder(),
+ color: Color(0XFF2B0D57),
+ ),
+ ),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: List.generate(
+ 10,
+ (index) => const MyStepDefaultItem(),
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+}
diff --git a/lib/core/widgets/stepper/styles/my_step_correct_item.dart b/lib/core/widgets/stepper/styles/my_step_correct_item.dart
new file mode 100644
index 0000000..61ee6d1
--- /dev/null
+++ b/lib/core/widgets/stepper/styles/my_step_correct_item.dart
@@ -0,0 +1,27 @@
+import 'package:flutter/material.dart';
+import 'package:shia_game_flutter/common_ui/resources/my_assets.dart';
+import 'package:shia_game_flutter/common_ui/resources/my_colors.dart';
+import 'package:shia_game_flutter/core/widgets/image/my_image.dart';
+
+class MyStepCorrectItem extends StatelessWidget {
+ const MyStepCorrectItem({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ height: 16,
+ width: 16,
+ padding: const EdgeInsets.all(3),
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ color: const Color(0XFF0BA310),
+ border: Border.all(
+ width: 1,
+ color: const Color(0XFF3DE543),
+ strokeAlign: BorderSide.strokeAlignInside,
+ ),
+ ),
+ child: const MyImage(asset: MyAssets.done, color: MyColors.white),
+ );
+ }
+}
diff --git a/lib/core/widgets/stepper/styles/my_step_current_item.dart b/lib/core/widgets/stepper/styles/my_step_current_item.dart
new file mode 100644
index 0000000..cd6d12a
--- /dev/null
+++ b/lib/core/widgets/stepper/styles/my_step_current_item.dart
@@ -0,0 +1,34 @@
+import 'package:flutter/material.dart';
+import 'package:shia_game_flutter/common_ui/resources/my_assets.dart';
+import 'package:shia_game_flutter/common_ui/resources/my_colors.dart';
+import 'package:shia_game_flutter/core/widgets/image/my_image.dart';
+
+class MyStepCurrentItem extends StatelessWidget {
+ const MyStepCurrentItem({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return Stack(
+ clipBehavior: Clip.none,
+ alignment: Alignment.center,
+ children: [
+ Container(
+ width: 16,
+ height: 16,
+ padding: const EdgeInsets.all(4),
+ decoration: const BoxDecoration(
+ shape: BoxShape.circle,
+ color: Color(0XFF2B0D57),
+ ),
+ child: Container(
+ decoration: const BoxDecoration(
+ shape: BoxShape.circle,
+ color: MyColors.white,
+ ),
+ ),
+ ),
+ const Positioned(top: -12, child: MyImage(asset: MyAssets.polygon)),
+ ],
+ );
+ }
+}
diff --git a/lib/core/widgets/stepper/styles/my_step_default_item.dart b/lib/core/widgets/stepper/styles/my_step_default_item.dart
new file mode 100644
index 0000000..9d8b49c
--- /dev/null
+++ b/lib/core/widgets/stepper/styles/my_step_default_item.dart
@@ -0,0 +1,17 @@
+import 'package:flutter/material.dart';
+
+class MyStepDefaultItem extends StatelessWidget {
+ const MyStepDefaultItem({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ width: 8,
+ height: 8,
+ decoration: const BoxDecoration(
+ shape: BoxShape.circle,
+ color: Color(0XFFA86CFF),
+ ),
+ );
+ }
+}
diff --git a/lib/core/widgets/stepper/styles/my_step_wrong_item.dart b/lib/core/widgets/stepper/styles/my_step_wrong_item.dart
new file mode 100644
index 0000000..b4ed4aa
--- /dev/null
+++ b/lib/core/widgets/stepper/styles/my_step_wrong_item.dart
@@ -0,0 +1,27 @@
+import 'package:flutter/material.dart';
+import 'package:shia_game_flutter/common_ui/resources/my_assets.dart';
+import 'package:shia_game_flutter/common_ui/resources/my_colors.dart';
+import 'package:shia_game_flutter/core/widgets/image/my_image.dart';
+
+class MyStepWrongItem extends StatelessWidget {
+ const MyStepWrongItem({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ height: 16,
+ width: 16,
+ padding: const EdgeInsets.all(4),
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ color: const Color(0XFFA30B0B),
+ border: Border.all(
+ width: 1,
+ color: const Color(0XFFE53D3D),
+ strokeAlign: BorderSide.strokeAlignInside,
+ ),
+ ),
+ child: const MyImage(asset: MyAssets.close, color: MyColors.white),
+ );
+ }
+}
diff --git a/lib/core/widgets/text/gradient_text.dart b/lib/core/widgets/text/gradient_text.dart
index 8d8b2f6..f8cc5fc 100644
--- a/lib/core/widgets/text/gradient_text.dart
+++ b/lib/core/widgets/text/gradient_text.dart
@@ -16,6 +16,8 @@ class GradientText extends StatelessWidget {
this.offset = Offset.zero,
this.textAlign,
this.textStyle,
+ this.begin,
+ this.end,
});
final String? text;
@@ -28,20 +30,22 @@ class GradientText extends StatelessWidget {
final Offset offset;
final TextAlign? textAlign;
final TextStyle? textStyle;
+ final AlignmentGeometry? begin;
+ final AlignmentGeometry? end;
@override
Widget build(BuildContext context) {
return ShaderMask(
blendMode: BlendMode.modulate,
shaderCallback: (bounds) => LinearGradient(
- begin: Alignment.topCenter,
- end: Alignment.bottomCenter,
+ begin: begin ?? Alignment.topCenter,
+ end: end ?? Alignment.bottomCenter,
colors: gradientColor ?? [
context.primaryColor,
context.primaryColor,
color,
],
- ).createShader(bounds),
+ ).createShader(bounds, textDirection: Directionality.of(context)),
child: Text(
text ?? '',
textAlign: textAlign,
diff --git a/lib/features/battle_league/data/datasource/battle_league_datasource.dart b/lib/features/battle_league/first_part/data/datasource/battle_league_datasource.dart
similarity index 79%
rename from lib/features/battle_league/data/datasource/battle_league_datasource.dart
rename to lib/features/battle_league/first_part/data/datasource/battle_league_datasource.dart
index dce5a9c..3e47fc6 100644
--- a/lib/features/battle_league/data/datasource/battle_league_datasource.dart
+++ b/lib/features/battle_league/first_part/data/datasource/battle_league_datasource.dart
@@ -2,8 +2,8 @@ import 'package:shia_game_flutter/core/constants/my_api.dart';
import 'package:shia_game_flutter/core/network/http_request.dart';
import 'package:shia_game_flutter/core/params/sample_params.dart';
import 'package:shia_game_flutter/core/response/base_response.dart';
-import 'package:shia_game_flutter/features/battle_league/data/model/battle_league_model.dart';
-import 'package:shia_game_flutter/features/battle_league/domain/entity/battle_league_entity.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/data/model/battle_league_model.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/domain/entity/battle_league_entity.dart';
abstract class IBattleLeagueDatasource {
Future getData({required SampleParams params});
diff --git a/lib/features/battle_league/data/model/battle_league_model.dart b/lib/features/battle_league/first_part/data/model/battle_league_model.dart
similarity index 68%
rename from lib/features/battle_league/data/model/battle_league_model.dart
rename to lib/features/battle_league/first_part/data/model/battle_league_model.dart
index ad9329c..a0dc921 100644
--- a/lib/features/battle_league/data/model/battle_league_model.dart
+++ b/lib/features/battle_league/first_part/data/model/battle_league_model.dart
@@ -1,4 +1,4 @@
-import 'package:shia_game_flutter/features/battle_league/domain/entity/battle_league_entity.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/domain/entity/battle_league_entity.dart';
class BattleLeagueModel extends BattleLeagueEntity {
const BattleLeagueModel({
diff --git a/lib/features/battle_league/data/repository_impl/battle_league_repository_impl.dart b/lib/features/battle_league/first_part/data/repository_impl/battle_league_repository_impl.dart
similarity index 72%
rename from lib/features/battle_league/data/repository_impl/battle_league_repository_impl.dart
rename to lib/features/battle_league/first_part/data/repository_impl/battle_league_repository_impl.dart
index 20d6668..36d681f 100644
--- a/lib/features/battle_league/data/repository_impl/battle_league_repository_impl.dart
+++ b/lib/features/battle_league/first_part/data/repository_impl/battle_league_repository_impl.dart
@@ -2,9 +2,9 @@ import 'package:flutter/foundation.dart';
import 'package:shia_game_flutter/core/error_handler/my_exception.dart';
import 'package:shia_game_flutter/core/params/sample_params.dart';
import 'package:shia_game_flutter/core/utils/data_state.dart';
-import 'package:shia_game_flutter/features/battle_league/data/datasource/battle_league_datasource.dart';
-import 'package:shia_game_flutter/features/battle_league/domain/entity/battle_league_entity.dart';
-import 'package:shia_game_flutter/features/battle_league/domain/repository/battle_league_repository.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/data/datasource/battle_league_datasource.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/domain/entity/battle_league_entity.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/domain/repository/battle_league_repository.dart';
class BattleLeagueRepositoryImpl implements IBattleLeagueRepository {
final IBattleLeagueDatasource datasource;
diff --git a/lib/features/battle_league/domain/entity/battle_league_entity.dart b/lib/features/battle_league/first_part/domain/entity/battle_league_entity.dart
similarity index 100%
rename from lib/features/battle_league/domain/entity/battle_league_entity.dart
rename to lib/features/battle_league/first_part/domain/entity/battle_league_entity.dart
diff --git a/lib/features/battle_league/domain/repository/battle_league_repository.dart b/lib/features/battle_league/first_part/domain/repository/battle_league_repository.dart
similarity index 75%
rename from lib/features/battle_league/domain/repository/battle_league_repository.dart
rename to lib/features/battle_league/first_part/domain/repository/battle_league_repository.dart
index 9d7cc47..6fde6dd 100644
--- a/lib/features/battle_league/domain/repository/battle_league_repository.dart
+++ b/lib/features/battle_league/first_part/domain/repository/battle_league_repository.dart
@@ -1,7 +1,7 @@
import 'package:shia_game_flutter/core/error_handler/my_exception.dart';
import 'package:shia_game_flutter/core/params/sample_params.dart';
import 'package:shia_game_flutter/core/utils/data_state.dart';
-import 'package:shia_game_flutter/features/battle_league/domain/entity/battle_league_entity.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/domain/entity/battle_league_entity.dart';
abstract class IBattleLeagueRepository {
Future> getData({required SampleParams params});
diff --git a/lib/features/battle_league/domain/usecases/get_battle_league_usecase.dart b/lib/features/battle_league/first_part/domain/usecases/get_battle_league_usecase.dart
similarity index 72%
rename from lib/features/battle_league/domain/usecases/get_battle_league_usecase.dart
rename to lib/features/battle_league/first_part/domain/usecases/get_battle_league_usecase.dart
index f69f6e7..0c201a7 100644
--- a/lib/features/battle_league/domain/usecases/get_battle_league_usecase.dart
+++ b/lib/features/battle_league/first_part/domain/usecases/get_battle_league_usecase.dart
@@ -2,8 +2,8 @@ import 'package:shia_game_flutter/core/error_handler/my_exception.dart';
import 'package:shia_game_flutter/core/params/sample_params.dart';
import 'package:shia_game_flutter/core/usecase/usecase.dart';
import 'package:shia_game_flutter/core/utils/data_state.dart';
-import 'package:shia_game_flutter/features/battle_league/domain/entity/battle_league_entity.dart';
-import 'package:shia_game_flutter/features/battle_league/domain/repository/battle_league_repository.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/domain/entity/battle_league_entity.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/domain/repository/battle_league_repository.dart';
class GetBattleLeagueUseCase implements UseCase {
final IBattleLeagueRepository repository;
diff --git a/lib/features/battle_league/presentation/binding/battle_league_binding.dart b/lib/features/battle_league/first_part/presentation/binding/battle_league_binding.dart
similarity index 76%
rename from lib/features/battle_league/presentation/binding/battle_league_binding.dart
rename to lib/features/battle_league/first_part/presentation/binding/battle_league_binding.dart
index 7ab12a7..c836af8 100644
--- a/lib/features/battle_league/presentation/binding/battle_league_binding.dart
+++ b/lib/features/battle_league/first_part/presentation/binding/battle_league_binding.dart
@@ -1,4 +1,4 @@
-import 'package:shia_game_flutter/features/battle_league/presentation/controller/battle_league_controller.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/controller/battle_league_controller.dart';
import 'package:get/get.dart';
class BattleLeagueBinding extends Bindings {
diff --git a/lib/features/battle_league/presentation/controller/battle_league_controller.dart b/lib/features/battle_league/first_part/presentation/controller/battle_league_controller.dart
similarity index 89%
rename from lib/features/battle_league/presentation/controller/battle_league_controller.dart
rename to lib/features/battle_league/first_part/presentation/controller/battle_league_controller.dart
index fd49a0f..20a645b 100644
--- a/lib/features/battle_league/presentation/controller/battle_league_controller.dart
+++ b/lib/features/battle_league/first_part/presentation/controller/battle_league_controller.dart
@@ -2,9 +2,9 @@ import 'package:flutter/material.dart';
import 'package:shia_game_flutter/core/params/sample_params.dart';
import 'package:shia_game_flutter/core/routers/my_routes.dart';
import 'package:shia_game_flutter/core/status/base_status.dart';
-import 'package:shia_game_flutter/features/battle_league/domain/entity/battle_league_entity.dart';
-import 'package:shia_game_flutter/features/battle_league/domain/usecases/get_battle_league_usecase.dart';
import 'package:get/get.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/domain/entity/battle_league_entity.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/domain/usecases/get_battle_league_usecase.dart';
class BattleLeagueController extends GetxController
with StateMixin, GetSingleTickerProviderStateMixin {
diff --git a/lib/features/battle_league/presentation/ui/battle_league_finding_page.dart b/lib/features/battle_league/first_part/presentation/ui/battle_league_finding_page.dart
similarity index 86%
rename from lib/features/battle_league/presentation/ui/battle_league_finding_page.dart
rename to lib/features/battle_league/first_part/presentation/ui/battle_league_finding_page.dart
index 47fbe38..3e61da9 100644
--- a/lib/features/battle_league/presentation/ui/battle_league_finding_page.dart
+++ b/lib/features/battle_league/first_part/presentation/ui/battle_league_finding_page.dart
@@ -7,9 +7,9 @@ import 'package:shia_game_flutter/core/utils/gap.dart';
import 'package:shia_game_flutter/core/utils/my_localization.dart';
import 'package:shia_game_flutter/core/utils/screen_size.dart';
import 'package:shia_game_flutter/core/widgets/image/my_image.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/controller/battle_league_controller.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/button/battle_purple_button.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/rank_title.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/controller/battle_league_controller.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/button/battle_purple_button.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/rank_title.dart';
class BattleLeagueFindingPage extends GetView {
const BattleLeagueFindingPage({super.key});
diff --git a/lib/features/battle_league/presentation/ui/battle_league_founded_page.dart b/lib/features/battle_league/first_part/presentation/ui/battle_league_founded_page.dart
similarity index 82%
rename from lib/features/battle_league/presentation/ui/battle_league_founded_page.dart
rename to lib/features/battle_league/first_part/presentation/ui/battle_league_founded_page.dart
index c809007..5a9f4fa 100644
--- a/lib/features/battle_league/presentation/ui/battle_league_founded_page.dart
+++ b/lib/features/battle_league/first_part/presentation/ui/battle_league_founded_page.dart
@@ -6,9 +6,9 @@ import 'package:shia_game_flutter/core/utils/gap.dart';
import 'package:shia_game_flutter/core/utils/screen_size.dart';
import 'package:shia_game_flutter/core/widgets/image/my_image.dart';
import 'package:shia_game_flutter/core/widgets/loading/my_linear_loading.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/controller/battle_league_controller.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/founded_page/founded_avatar.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/rank_title.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/controller/battle_league_controller.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/founded_page/founded_avatar.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/rank_title.dart';
class BattleLeagueFoundedPage extends GetView {
const BattleLeagueFoundedPage({super.key});
diff --git a/lib/features/battle_league/presentation/ui/battle_league_page.dart b/lib/features/battle_league/first_part/presentation/ui/battle_league_page.dart
similarity index 78%
rename from lib/features/battle_league/presentation/ui/battle_league_page.dart
rename to lib/features/battle_league/first_part/presentation/ui/battle_league_page.dart
index caa64f2..a409cdc 100644
--- a/lib/features/battle_league/presentation/ui/battle_league_page.dart
+++ b/lib/features/battle_league/first_part/presentation/ui/battle_league_page.dart
@@ -6,11 +6,11 @@ import 'package:shia_game_flutter/core/utils/my_localization.dart';
import 'package:shia_game_flutter/core/utils/screen_size.dart';
import 'package:shia_game_flutter/core/widgets/app_bar/enums/app_bar_type.dart';
import 'package:shia_game_flutter/core/widgets/app_bar/my_app_bar.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/controller/battle_league_controller.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/button/battle_golden_button.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/main_page/battle_league_tab_bar.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/main_page/regional_ranking.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/main_page/time_ranking.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/controller/battle_league_controller.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/button/battle_golden_button.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/main_page/battle_league_tab_bar.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/main_page/regional_ranking.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/main_page/time_ranking.dart';
class BattleLeaguePage extends GetView {
const BattleLeaguePage({super.key});
diff --git a/lib/features/battle_league/presentation/ui/battle_league_topic_page.dart b/lib/features/battle_league/first_part/presentation/ui/battle_league_topic_page.dart
similarity index 86%
rename from lib/features/battle_league/presentation/ui/battle_league_topic_page.dart
rename to lib/features/battle_league/first_part/presentation/ui/battle_league_topic_page.dart
index cb76ea9..755ed82 100644
--- a/lib/features/battle_league/presentation/ui/battle_league_topic_page.dart
+++ b/lib/features/battle_league/first_part/presentation/ui/battle_league_topic_page.dart
@@ -8,10 +8,10 @@ import 'package:shia_game_flutter/core/utils/my_localization.dart';
import 'package:shia_game_flutter/core/utils/screen_size.dart';
import 'package:shia_game_flutter/core/widgets/app_bar/enums/app_bar_type.dart';
import 'package:shia_game_flutter/core/widgets/app_bar/my_app_bar.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/controller/battle_league_controller.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/button/battle_golden_button.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/button/battle_grey_button.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/topic_page/topic_widget.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/controller/battle_league_controller.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/button/battle_golden_button.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/button/battle_grey_button.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/topic_page/topic_widget.dart';
class BattleLeagueTopicPage extends GetView {
const BattleLeagueTopicPage({super.key});
diff --git a/lib/features/battle_league/presentation/ui/widgets/button/battle_golden_button.dart b/lib/features/battle_league/first_part/presentation/ui/widgets/button/battle_golden_button.dart
similarity index 100%
rename from lib/features/battle_league/presentation/ui/widgets/button/battle_golden_button.dart
rename to lib/features/battle_league/first_part/presentation/ui/widgets/button/battle_golden_button.dart
diff --git a/lib/features/battle_league/presentation/ui/widgets/button/battle_grey_button.dart b/lib/features/battle_league/first_part/presentation/ui/widgets/button/battle_grey_button.dart
similarity index 100%
rename from lib/features/battle_league/presentation/ui/widgets/button/battle_grey_button.dart
rename to lib/features/battle_league/first_part/presentation/ui/widgets/button/battle_grey_button.dart
diff --git a/lib/features/battle_league/presentation/ui/widgets/button/battle_purple_button.dart b/lib/features/battle_league/first_part/presentation/ui/widgets/button/battle_purple_button.dart
similarity index 100%
rename from lib/features/battle_league/presentation/ui/widgets/button/battle_purple_button.dart
rename to lib/features/battle_league/first_part/presentation/ui/widgets/button/battle_purple_button.dart
diff --git a/lib/features/battle_league/presentation/ui/widgets/founded_page/founded_avatar.dart b/lib/features/battle_league/first_part/presentation/ui/widgets/founded_page/founded_avatar.dart
similarity index 100%
rename from lib/features/battle_league/presentation/ui/widgets/founded_page/founded_avatar.dart
rename to lib/features/battle_league/first_part/presentation/ui/widgets/founded_page/founded_avatar.dart
diff --git a/lib/features/battle_league/presentation/ui/widgets/main_page/battle_league_tab_bar.dart b/lib/features/battle_league/first_part/presentation/ui/widgets/main_page/battle_league_tab_bar.dart
similarity index 100%
rename from lib/features/battle_league/presentation/ui/widgets/main_page/battle_league_tab_bar.dart
rename to lib/features/battle_league/first_part/presentation/ui/widgets/main_page/battle_league_tab_bar.dart
diff --git a/lib/features/battle_league/presentation/ui/widgets/main_page/filter_ranking_button.dart b/lib/features/battle_league/first_part/presentation/ui/widgets/main_page/filter_ranking_button.dart
similarity index 100%
rename from lib/features/battle_league/presentation/ui/widgets/main_page/filter_ranking_button.dart
rename to lib/features/battle_league/first_part/presentation/ui/widgets/main_page/filter_ranking_button.dart
diff --git a/lib/features/battle_league/presentation/ui/widgets/main_page/my_ranking_widget.dart b/lib/features/battle_league/first_part/presentation/ui/widgets/main_page/my_ranking_widget.dart
similarity index 100%
rename from lib/features/battle_league/presentation/ui/widgets/main_page/my_ranking_widget.dart
rename to lib/features/battle_league/first_part/presentation/ui/widgets/main_page/my_ranking_widget.dart
diff --git a/lib/features/battle_league/presentation/ui/widgets/main_page/ranking_region.dart b/lib/features/battle_league/first_part/presentation/ui/widgets/main_page/ranking_region.dart
similarity index 100%
rename from lib/features/battle_league/presentation/ui/widgets/main_page/ranking_region.dart
rename to lib/features/battle_league/first_part/presentation/ui/widgets/main_page/ranking_region.dart
diff --git a/lib/features/battle_league/presentation/ui/widgets/main_page/ranking_scrollbar.dart b/lib/features/battle_league/first_part/presentation/ui/widgets/main_page/ranking_scrollbar.dart
similarity index 100%
rename from lib/features/battle_league/presentation/ui/widgets/main_page/ranking_scrollbar.dart
rename to lib/features/battle_league/first_part/presentation/ui/widgets/main_page/ranking_scrollbar.dart
diff --git a/lib/features/battle_league/presentation/ui/widgets/main_page/ranking_time.dart b/lib/features/battle_league/first_part/presentation/ui/widgets/main_page/ranking_time.dart
similarity index 100%
rename from lib/features/battle_league/presentation/ui/widgets/main_page/ranking_time.dart
rename to lib/features/battle_league/first_part/presentation/ui/widgets/main_page/ranking_time.dart
diff --git a/lib/features/battle_league/presentation/ui/widgets/main_page/ranking_widget.dart b/lib/features/battle_league/first_part/presentation/ui/widgets/main_page/ranking_widget.dart
similarity index 100%
rename from lib/features/battle_league/presentation/ui/widgets/main_page/ranking_widget.dart
rename to lib/features/battle_league/first_part/presentation/ui/widgets/main_page/ranking_widget.dart
diff --git a/lib/features/battle_league/presentation/ui/widgets/main_page/regional_ranking.dart b/lib/features/battle_league/first_part/presentation/ui/widgets/main_page/regional_ranking.dart
similarity index 78%
rename from lib/features/battle_league/presentation/ui/widgets/main_page/regional_ranking.dart
rename to lib/features/battle_league/first_part/presentation/ui/widgets/main_page/regional_ranking.dart
index 39b9954..59be5a7 100644
--- a/lib/features/battle_league/presentation/ui/widgets/main_page/regional_ranking.dart
+++ b/lib/features/battle_league/first_part/presentation/ui/widgets/main_page/regional_ranking.dart
@@ -2,11 +2,11 @@ import 'package:flutter/material.dart';
import 'package:shia_game_flutter/core/utils/gap.dart';
import 'package:shia_game_flutter/core/utils/my_localization.dart';
import 'package:shia_game_flutter/core/utils/screen_size.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/main_page/filter_ranking_button.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/main_page/my_ranking_widget.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/main_page/ranking_region.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/main_page/ranking_scrollbar.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/main_page/ranking_widget.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/main_page/filter_ranking_button.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/main_page/my_ranking_widget.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/main_page/ranking_region.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/main_page/ranking_scrollbar.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/main_page/ranking_widget.dart';
class RegionalRanking extends StatefulWidget {
const RegionalRanking({super.key});
diff --git a/lib/features/battle_league/presentation/ui/widgets/main_page/time_ranking.dart b/lib/features/battle_league/first_part/presentation/ui/widgets/main_page/time_ranking.dart
similarity index 79%
rename from lib/features/battle_league/presentation/ui/widgets/main_page/time_ranking.dart
rename to lib/features/battle_league/first_part/presentation/ui/widgets/main_page/time_ranking.dart
index fae3447..2bd1995 100644
--- a/lib/features/battle_league/presentation/ui/widgets/main_page/time_ranking.dart
+++ b/lib/features/battle_league/first_part/presentation/ui/widgets/main_page/time_ranking.dart
@@ -2,11 +2,11 @@ import 'package:flutter/material.dart';
import 'package:shia_game_flutter/core/utils/gap.dart';
import 'package:shia_game_flutter/core/utils/my_localization.dart';
import 'package:shia_game_flutter/core/utils/screen_size.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/main_page/filter_ranking_button.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/main_page/my_ranking_widget.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/main_page/ranking_scrollbar.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/main_page/ranking_widget.dart';
-import 'package:shia_game_flutter/features/battle_league/presentation/ui/widgets/main_page/ranking_time.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/main_page/filter_ranking_button.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/main_page/my_ranking_widget.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/main_page/ranking_scrollbar.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/main_page/ranking_time.dart';
+import 'package:shia_game_flutter/features/battle_league/first_part/presentation/ui/widgets/main_page/ranking_widget.dart';
class TimeRanking extends StatefulWidget {
const TimeRanking({super.key});
diff --git a/lib/features/battle_league/presentation/ui/widgets/rank_title.dart b/lib/features/battle_league/first_part/presentation/ui/widgets/rank_title.dart
similarity index 100%
rename from lib/features/battle_league/presentation/ui/widgets/rank_title.dart
rename to lib/features/battle_league/first_part/presentation/ui/widgets/rank_title.dart
diff --git a/lib/features/battle_league/presentation/ui/widgets/topic_page/topic_widget.dart b/lib/features/battle_league/first_part/presentation/ui/widgets/topic_page/topic_widget.dart
similarity index 100%
rename from lib/features/battle_league/presentation/ui/widgets/topic_page/topic_widget.dart
rename to lib/features/battle_league/first_part/presentation/ui/widgets/topic_page/topic_widget.dart
diff --git a/lib/features/battle_league/question_part/bl_question/data/datasource/bl_question_datasource.dart b/lib/features/battle_league/question_part/bl_question/data/datasource/bl_question_datasource.dart
new file mode 100644
index 0000000..bd224d8
--- /dev/null
+++ b/lib/features/battle_league/question_part/bl_question/data/datasource/bl_question_datasource.dart
@@ -0,0 +1,28 @@
+import 'package:shia_game_flutter/core/constants/my_api.dart';
+import 'package:shia_game_flutter/core/network/http_request.dart';
+import 'package:shia_game_flutter/core/params/bl_question_params.dart';
+import 'package:shia_game_flutter/core/response/base_response.dart';
+import 'package:shia_game_flutter/features/battle_league/question_part/bl_question/data/model/bl_question_model.dart';
+import 'package:shia_game_flutter/features/battle_league/question_part/bl_question/domain/entity/bl_question_entity.dart';
+
+abstract class IBLQuestionDatasource {
+ Future getData({required BLQuestionParams params});
+}
+
+class BLQuestionDatasourceImpl implements IBLQuestionDatasource {
+ final IHttpRequest httpRequest;
+
+ const BLQuestionDatasourceImpl(this.httpRequest);
+
+ @override
+ Future getData({required BLQuestionParams params}) async {
+ final response = await httpRequest.get(
+ path: MyApi.baseUrl,
+ );
+
+ return BaseResponse.getData(
+ response?['data'],
+ (json) => BLQuestionModel.fromJson(json),
+ );
+ }
+}
diff --git a/lib/features/battle_league/question_part/bl_question/data/model/bl_question_model.dart b/lib/features/battle_league/question_part/bl_question/data/model/bl_question_model.dart
new file mode 100644
index 0000000..99ffc46
--- /dev/null
+++ b/lib/features/battle_league/question_part/bl_question/data/model/bl_question_model.dart
@@ -0,0 +1,13 @@
+import 'package:shia_game_flutter/features/battle_league/question_part/bl_question/domain/entity/bl_question_entity.dart';
+
+class BLQuestionModel extends BLQuestionEntity {
+ const BLQuestionModel({
+ super.id,
+ });
+
+ factory BLQuestionModel.fromJson(Map json) {
+ return BLQuestionModel(
+ id: json['id'],
+ );
+ }
+}
diff --git a/lib/features/battle_league/question_part/bl_question/data/repository_impl/bl_question_repository_impl.dart b/lib/features/battle_league/question_part/bl_question/data/repository_impl/bl_question_repository_impl.dart
new file mode 100644
index 0000000..d3291f9
--- /dev/null
+++ b/lib/features/battle_league/question_part/bl_question/data/repository_impl/bl_question_repository_impl.dart
@@ -0,0 +1,29 @@
+import 'package:flutter/foundation.dart';
+import 'package:shia_game_flutter/core/error_handler/my_exception.dart';
+import 'package:shia_game_flutter/core/params/bl_question_params.dart';
+import 'package:shia_game_flutter/core/utils/data_state.dart';
+import 'package:shia_game_flutter/features/battle_league/question_part/bl_question/data/datasource/bl_question_datasource.dart';
+import 'package:shia_game_flutter/features/battle_league/question_part/bl_question/domain/entity/bl_question_entity.dart';
+import 'package:shia_game_flutter/features/battle_league/question_part/bl_question/domain/repository/bl_question_repository.dart';
+
+class BLQuestionRepositoryImpl implements IBLQuestionRepository {
+ final IBLQuestionDatasource datasource;
+
+ const BLQuestionRepositoryImpl(this.datasource);
+
+ @override
+ Future> getData({required BLQuestionParams params}) async {
+ try {
+ final BLQuestionEntity response = await datasource.getData(params: params);
+ return DataState.success(response);
+ } on MyException catch (e) {
+ return DataState.error(e);
+ } catch (e) {
+ if (kDebugMode) {
+ rethrow;
+ } else {
+ return DataState.error(MyException(errorMessage: '$e'));
+ }
+ }
+ }
+}
diff --git a/lib/features/battle_league/question_part/bl_question/domain/entity/bl_question_entity.dart b/lib/features/battle_league/question_part/bl_question/domain/entity/bl_question_entity.dart
new file mode 100644
index 0000000..7818664
--- /dev/null
+++ b/lib/features/battle_league/question_part/bl_question/domain/entity/bl_question_entity.dart
@@ -0,0 +1,14 @@
+import 'package:equatable/equatable.dart';
+
+class BLQuestionEntity extends Equatable {
+ final int? id;
+
+ const BLQuestionEntity({
+ this.id,
+ });
+
+ @override
+ List