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

update project structure

parent bfff9e47
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';
part 'otp_verify_response_model.g.dart';
......
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:pin_code_fields/pin_code_fields.dart';
import '../../base/base_screen.dart';
import '../../base/basic_state.dart';
import '../../resources/base_color.dart';
import '../../widgets/back_button.dart';
import '../../widgets/support_button.dart';
import '../../shared/widgets/base_view/base_screen.dart';
import '../../shared/widgets/base_view/basic_state.dart';
import '../../core/theme/base_color.dart';
import '../../shared/widgets/back_button.dart';
import '../../shared/widgets/support_button.dart';
import 'otp_viewmodel.dart';
class OtpScreen extends BaseScreen {
......@@ -24,7 +24,7 @@ class _OtpScreenState extends BaseState<OtpScreen> with BasicState {
super.initState();
final OtpViewModel otpVM = Get.put(OtpViewModel(widget.repository));
ever(otpVM.errorMessage, (value) {
if (value != null && value.toString().isNotEmpty) {
if (value.toString().isNotEmpty) {
WidgetsBinding.instance.addPostFrameCallback((_) {
showAlertError(content: value);
});
......
import 'dart:async';
import 'package:get/get.dart';
import 'package:mypoint_flutter_app/base/base_response_model.dart';
import 'package:mypoint_flutter_app/configs/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';
import 'package:mypoint_flutter_app/shared/widgets/base_view/base_response_model.dart';
import 'package:mypoint_flutter_app/app/config/constants.dart';
abstract class IOtpRepository {
Future<void> sendOtp();
......@@ -85,8 +80,8 @@ class OtpViewModel extends GetxController {
}
}
Future<int?> onResendOtp() async {
if (currentCountdown.value > 0) return null;
Future<void> onResendOtp() async {
if (currentCountdown.value > 0) return;
try {
final response = await repository.resendOtp();
_maxCountdown = response ?? Constants.otpTtl;
......
// sign_up_otp_repository.dart
import 'package:flutter/material.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 '../../base/base_response_model.dart';
import '../../networking/restful_api_viewmodel.dart';
import '../../shared/widgets/base_view/base_response_model.dart';
import '../../core/network/restful_api_viewmodel.dart';
import '../create_pass/create_pass_screen.dart';
import '../create_pass/signup_create_password_repository.dart';
import 'model/otp_verify_response_model.dart';
......
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.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 '../../base/base_screen.dart';
import '../../base/basic_state.dart';
import '../../extensions/string_extension.dart';
import '../../resources/base_color.dart';
import '../../shared/widgets/base_view/base_screen.dart';
import '../../shared/widgets/base_view/basic_state.dart';
import '../../core/utils/extensions/string_extension.dart';
import '../../core/theme/base_color.dart';
import '../../shared/router_gage.dart';
import '../../widgets/back_button.dart';
import '../../widgets/network_image_with_aspect_ratio.dart';
import '../../shared/widgets/back_button.dart';
import '../../shared/widgets/network_image_with_aspect_ratio.dart';
import 'campaign_detail_viewmodel.dart';
import 'campaign_item_page_widget.dart';
import 'model/campaign_detail_item_model.dart';
......@@ -56,7 +55,7 @@ class _CampaignDetailScreenState extends BaseState<CampaignDetailScreen> with Ba
if (pageDetail == null) {
return Stack(
children: [
const Center(child: EmptyWidget()),
Center(child: EmptyWidget(isLoading: _viewModel.isLoading.value)),
Positioned(top: MediaQuery
.of(context)
.padding
......
import 'package:get/get.dart';
import 'package:mypoint_flutter_app/configs/constants.dart';
import 'package:mypoint_flutter_app/networking/api/website_api.dart' deferred as website_api;
import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart';
import '../../networking/restful_api_viewmodel.dart';
import 'package:mypoint_flutter_app/app/config/constants.dart';
import 'package:mypoint_flutter_app/core/network/api/website_api.dart' deferred as website_api;
import 'package:mypoint_flutter_app/core/network/restful_api_client_all_request.dart';
import '../../core/network/restful_api_viewmodel.dart';
import 'model/campaign_detail_model.dart';
import 'model/detail_page_rule_type.dart';
import '../faqs/faqs_model.dart';
......
......@@ -41,7 +41,7 @@ class CampaignItemPageWidget extends StatelessWidget {
width: 60,
height: 60,
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 'media_type_item_campaign.dart';
part 'campaign_detail_item_model.g.dart';
@JsonSerializable()
......
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';
part 'campaign_detail_model.g.dart';
@JsonSerializable()
class CampaignDetailModel {
final String? title;
......
......@@ -29,6 +29,8 @@ extension DetailPageRuleTypeExtension on DetailPageRuleType {
return DetailPageRuleType.decree;
case "APP_TERM_OF_DELETE_ACCOUNT":
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 {
image,
......
// profile_response_model.dart
import 'package:json_annotation/json_annotation.dart';
import 'working_site_model.dart';
import 'worker_site_model.dart';
......
import 'package:json_annotation/json_annotation.dart';
part 'user_agreement_model.g.dart';
@JsonSerializable()
class UserAgreementModel {
@JsonKey(name: 'working_site_id')
......
import 'package:json_annotation/json_annotation.dart';
part 'worker_site_model.g.dart';
@JsonSerializable()
class WorkerSiteModel {
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