Commit 6b980613 authored by DatHV's avatar DatHV
Browse files

update project structure

parent bfff9e47
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
import '../../../base/base_response_model.dart'; import '../../../shared/widgets/base_view/base_response_model.dart';
import 'otp_claim_verify_response_model.dart'; import 'otp_claim_verify_response_model.dart';
part 'otp_verify_response_model.g.dart'; part 'otp_verify_response_model.g.dart';
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:pin_code_fields/pin_code_fields.dart'; import 'package:pin_code_fields/pin_code_fields.dart';
import '../../base/base_screen.dart'; import '../../shared/widgets/base_view/base_screen.dart';
import '../../base/basic_state.dart'; import '../../shared/widgets/base_view/basic_state.dart';
import '../../resources/base_color.dart'; import '../../core/theme/base_color.dart';
import '../../widgets/back_button.dart'; import '../../shared/widgets/back_button.dart';
import '../../widgets/support_button.dart'; import '../../shared/widgets/support_button.dart';
import 'otp_viewmodel.dart'; import 'otp_viewmodel.dart';
class OtpScreen extends BaseScreen { class OtpScreen extends BaseScreen {
...@@ -24,7 +24,7 @@ class _OtpScreenState extends BaseState<OtpScreen> with BasicState { ...@@ -24,7 +24,7 @@ class _OtpScreenState extends BaseState<OtpScreen> with BasicState {
super.initState(); super.initState();
final OtpViewModel otpVM = Get.put(OtpViewModel(widget.repository)); final OtpViewModel otpVM = Get.put(OtpViewModel(widget.repository));
ever(otpVM.errorMessage, (value) { ever(otpVM.errorMessage, (value) {
if (value != null && value.toString().isNotEmpty) { if (value.toString().isNotEmpty) {
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
showAlertError(content: value); showAlertError(content: value);
}); });
......
import 'dart:async'; import 'dart:async';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:mypoint_flutter_app/base/base_response_model.dart'; import 'package:mypoint_flutter_app/shared/widgets/base_view/base_response_model.dart';
import 'package:mypoint_flutter_app/configs/constants.dart'; import 'package:mypoint_flutter_app/app/config/constants.dart';
import 'package:mypoint_flutter_app/screen/create_pass/create_pass_screen.dart';
import 'package:mypoint_flutter_app/screen/login/login_screen.dart';
import 'package:mypoint_flutter_app/screen/splash/splash_screen_viewmodel.dart';
import '../create_pass/signup_create_password_repository.dart';
import 'model/otp_verify_response_model.dart';
abstract class IOtpRepository { abstract class IOtpRepository {
Future<void> sendOtp(); Future<void> sendOtp();
...@@ -85,8 +80,8 @@ class OtpViewModel extends GetxController { ...@@ -85,8 +80,8 @@ class OtpViewModel extends GetxController {
} }
} }
Future<int?> onResendOtp() async { Future<void> onResendOtp() async {
if (currentCountdown.value > 0) return null; if (currentCountdown.value > 0) return;
try { try {
final response = await repository.resendOtp(); final response = await repository.resendOtp();
_maxCountdown = response ?? Constants.otpTtl; _maxCountdown = response ?? Constants.otpTtl;
......
// sign_up_otp_repository.dart
import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart'; import 'package:mypoint_flutter_app/core/network/restful_api_client_all_request.dart';
import 'package:mypoint_flutter_app/shared/router_gage.dart'; import 'package:mypoint_flutter_app/shared/router_gage.dart';
import '../../base/base_response_model.dart'; import '../../shared/widgets/base_view/base_response_model.dart';
import '../../networking/restful_api_viewmodel.dart'; import '../../core/network/restful_api_viewmodel.dart';
import '../create_pass/create_pass_screen.dart'; import '../create_pass/create_pass_screen.dart';
import '../create_pass/signup_create_password_repository.dart'; import '../create_pass/signup_create_password_repository.dart';
import 'model/otp_verify_response_model.dart'; import 'model/otp_verify_response_model.dart';
......
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart'; import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:mypoint_flutter_app/widgets/custom_empty_widget.dart'; import 'package:mypoint_flutter_app/shared/widgets/custom_empty_widget.dart';
import 'package:share_plus/share_plus.dart'; import 'package:share_plus/share_plus.dart';
import '../../base/base_screen.dart'; import '../../shared/widgets/base_view/base_screen.dart';
import '../../base/basic_state.dart'; import '../../shared/widgets/base_view/basic_state.dart';
import '../../extensions/string_extension.dart'; import '../../core/utils/extensions/string_extension.dart';
import '../../resources/base_color.dart'; import '../../core/theme/base_color.dart';
import '../../shared/router_gage.dart'; import '../../shared/router_gage.dart';
import '../../widgets/back_button.dart'; import '../../shared/widgets/back_button.dart';
import '../../widgets/network_image_with_aspect_ratio.dart'; import '../../shared/widgets/network_image_with_aspect_ratio.dart';
import 'campaign_detail_viewmodel.dart'; import 'campaign_detail_viewmodel.dart';
import 'campaign_item_page_widget.dart'; import 'campaign_item_page_widget.dart';
import 'model/campaign_detail_item_model.dart'; import 'model/campaign_detail_item_model.dart';
...@@ -56,7 +55,7 @@ class _CampaignDetailScreenState extends BaseState<CampaignDetailScreen> with Ba ...@@ -56,7 +55,7 @@ class _CampaignDetailScreenState extends BaseState<CampaignDetailScreen> with Ba
if (pageDetail == null) { if (pageDetail == null) {
return Stack( return Stack(
children: [ children: [
const Center(child: EmptyWidget()), Center(child: EmptyWidget(isLoading: _viewModel.isLoading.value)),
Positioned(top: MediaQuery Positioned(top: MediaQuery
.of(context) .of(context)
.padding .padding
......
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:mypoint_flutter_app/configs/constants.dart'; import 'package:mypoint_flutter_app/app/config/constants.dart';
import 'package:mypoint_flutter_app/networking/api/website_api.dart' deferred as website_api; import 'package:mypoint_flutter_app/core/network/api/website_api.dart' deferred as website_api;
import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart'; import 'package:mypoint_flutter_app/core/network/restful_api_client_all_request.dart';
import '../../networking/restful_api_viewmodel.dart'; import '../../core/network/restful_api_viewmodel.dart';
import 'model/campaign_detail_model.dart'; import 'model/campaign_detail_model.dart';
import 'model/detail_page_rule_type.dart'; import 'model/detail_page_rule_type.dart';
import '../faqs/faqs_model.dart'; import '../faqs/faqs_model.dart';
......
...@@ -41,7 +41,7 @@ class CampaignItemPageWidget extends StatelessWidget { ...@@ -41,7 +41,7 @@ class CampaignItemPageWidget extends StatelessWidget {
width: 60, width: 60,
height: 60, height: 60,
fit: BoxFit.cover, fit: BoxFit.cover,
errorBuilder: (_, __, ___) => const Icon(Icons.image_not_supported), errorBuilder: (_, _, _) => const Icon(Icons.image_not_supported),
), ),
), ),
], ],
......
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
import 'media_type_item_campaign.dart';
part 'campaign_detail_item_model.g.dart'; part 'campaign_detail_item_model.g.dart';
@JsonSerializable() @JsonSerializable()
......
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
import 'package:mypoint_flutter_app/directional/directional_screen.dart'; import 'package:mypoint_flutter_app/shared/navigation/directional_screen.dart';
import 'campaign_detail_item_model.dart'; import 'campaign_detail_item_model.dart';
part 'campaign_detail_model.g.dart'; part 'campaign_detail_model.g.dart';
@JsonSerializable() @JsonSerializable()
class CampaignDetailModel { class CampaignDetailModel {
final String? title; final String? title;
......
...@@ -29,6 +29,8 @@ extension DetailPageRuleTypeExtension on DetailPageRuleType { ...@@ -29,6 +29,8 @@ extension DetailPageRuleTypeExtension on DetailPageRuleType {
return DetailPageRuleType.decree; return DetailPageRuleType.decree;
case "APP_TERM_OF_DELETE_ACCOUNT": case "APP_TERM_OF_DELETE_ACCOUNT":
return DetailPageRuleType.policyDeleteAccount; return DetailPageRuleType.policyDeleteAccount;
default:
return null;
} }
} }
} }
\ No newline at end of file
import 'package:get/get.dart';
import 'package:json_annotation/json_annotation.dart';
enum MediaTypeItemCampaign { enum MediaTypeItemCampaign {
image, image,
......
// profile_response_model.dart
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
import 'working_site_model.dart'; import 'working_site_model.dart';
import 'worker_site_model.dart'; import 'worker_site_model.dart';
......
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
part 'user_agreement_model.g.dart'; part 'user_agreement_model.g.dart';
@JsonSerializable() @JsonSerializable()
class UserAgreementModel { class UserAgreementModel {
@JsonKey(name: 'working_site_id') @JsonKey(name: 'working_site_id')
......
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
part 'worker_site_model.g.dart'; part 'worker_site_model.g.dart';
@JsonSerializable() @JsonSerializable()
class WorkerSiteModel { class WorkerSiteModel {
final String? id; final String? id;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment