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

update project structure

parent bfff9e47
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:mypoint_flutter_app/extensions/string_extension.dart';
import 'package:mypoint_flutter_app/widgets/custom_app_bar.dart';
import '../../base/base_screen.dart';
import '../../base/basic_state.dart';
import '../../widgets/image_loader.dart';
import 'package:mypoint_flutter_app/core/utils/extensions/string_extension.dart';
import 'package:mypoint_flutter_app/shared/widgets/custom_app_bar.dart';
import '../../shared/widgets/base_view/base_screen.dart';
import '../../shared/widgets/base_view/basic_state.dart';
import '../../shared/widgets/image_loader.dart';
import 'models/notification_detail_model.dart';
import 'notification_detail_viewmodel.dart';
......
import 'package:get/get_rx/src/rx_types/rx_types.dart';
import 'package:mypoint_flutter_app/networking/api/notification_api.dart' deferred as notification_api;
import '../../configs/constants.dart';
import '../../networking/restful_api_viewmodel.dart';
import 'package:mypoint_flutter_app/core/network/api/notification_api.dart' deferred as notification_api;
import '../../app/config/constants.dart';
import '../../core/network/restful_api_viewmodel.dart';
import 'models/notification_detail_model.dart';
class NotificationDetailViewModel extends RestfulApiViewModel {
......@@ -26,7 +26,7 @@ class NotificationDetailViewModel extends RestfulApiViewModel {
request: () async {
await _ensureNotificationApiLoaded();
final api = notification_api.NotificationApi(client);
return api.getNotificationDetail(id ?? '');
return api.getNotificationDetail(id);
},
onSuccess: (data, _) {
final notify = data.notification;
......
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:get/get.dart';
import '../../base/base_screen.dart';
import '../../base/basic_state.dart';
import '../../resources/base_color.dart';
import '../../widgets/alert/data_alert_model.dart';
import '../../widgets/custom_empty_widget.dart';
import '../../widgets/custom_navigation_bar.dart';
import '../../widgets/image_loader.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/alert/data_alert_model.dart';
import '../../shared/widgets/custom_empty_widget.dart';
import '../../shared/widgets/custom_navigation_bar.dart';
import '../../shared/widgets/image_loader.dart';
import 'models/notification_item_model.dart';
import 'notification_viewmodel.dart';
......@@ -30,7 +29,7 @@ class _NotificationScreenState extends BaseState<NotificationScreen> with BasicS
void initState() {
super.initState();
_scrollController.addListener(() {
if (_scrollController.position.pixels >= _scrollController.position.maxScrollExtent - 100) {
if (_scrollController.position.pixels >= _scrollController.position.maxScrollExtent - 100 && !_viewModel.isLoading.value) {
_viewModel.fetchNotifications(refresh: false);
}
});
......@@ -61,7 +60,7 @@ class _NotificationScreenState extends BaseState<NotificationScreen> with BasicS
_buildNotificationCategory(),
const Divider(height: 1),
if (items.isEmpty)
const Expanded(child: EmptyWidget())
Expanded(child: EmptyWidget(isLoading: _viewModel.isLoading.value))
else
Expanded(
child: Container(
......
import 'package:get/get.dart';
import 'package:mypoint_flutter_app/networking/api/notification_api.dart' deferred as notification_api;
import '../../base/base_response_model.dart';
import '../../networking/restful_api_viewmodel.dart';
import '../../preference/data_preference.dart';
import 'package:mypoint_flutter_app/core/network/api/notification_api.dart' deferred as notification_api;
import '../../shared/widgets/base_view/base_response_model.dart';
import '../../core/network/restful_api_viewmodel.dart';
import '../../shared/preferences/data_preference.dart';
import '../../shared/router_gage.dart';
import 'models/category_notify_item_model.dart';
import 'models/notification_detail_model.dart';
import 'models/notification_item_model.dart';
import 'models/notification_list_data_model.dart';
import 'notification_detail_screen.dart';
class NotificationViewModel extends RestfulApiViewModel {
final RxList<CategoryNotifyItemModel> categories = <CategoryNotifyItemModel>[].obs;
final RxList<NotificationItemModel> notifications = <NotificationItemModel>[].obs;
final RxBool isLoading = false.obs;
final _pageLimit = 10;
var _notificationIndex = 0;
void Function(String message)? onShowAlertError;
......@@ -48,11 +46,13 @@ class NotificationViewModel extends RestfulApiViewModel {
onSuccess: (data, _) {
if (data.isNotEmpty) data[0].isSelected = true;
categories.assignAll(data);
fetchNotifications(refresh: true);
},
onFailure: (msg, _, _) async {
onShowAlertError?.call(msg);
},
onComplete: () {
fetchNotifications(refresh: true);
},
);
}
......
......@@ -4,10 +4,10 @@ import 'package:flutter/services.dart';
import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart';
import 'package:get/get.dart';
import 'package:mypoint_flutter_app/shared/router_gage.dart';
import 'package:mypoint_flutter_app/widgets/image_loader.dart';
import '../../base/base_screen.dart';
import '../../base/basic_state.dart';
import '../../resources/base_color.dart';
import 'package:mypoint_flutter_app/shared/widgets/image_loader.dart';
import '../../shared/widgets/base_view/base_screen.dart';
import '../../shared/widgets/base_view/basic_state.dart';
import '../../core/theme/base_color.dart';
import '../faqs/faqs_screen.dart';
import '../pageDetail/model/detail_page_rule_type.dart';
import 'onboarding_viewmodel.dart';
......
import 'package:get/get.dart';
import 'package:mypoint_flutter_app/extensions/string_extension.dart';
import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart';
import '../../networking/restful_api_viewmodel.dart';
import 'package:mypoint_flutter_app/core/utils/extensions/string_extension.dart';
import 'package:mypoint_flutter_app/core/network/restful_api_client_all_request.dart';
import '../../core/network/restful_api_viewmodel.dart';
import '../../shared/router_gage.dart';
import '../otp/otp_screen.dart';
import '../otp/verify_otp_repository.dart';
......@@ -14,12 +14,9 @@ class OnboardingViewModel extends RestfulApiViewModel {
final _info = Rxn<OnboardingInfoModel>();
var checkPhoneRes = Rxn<CheckPhoneResponseModel>();
void Function(String message)? onShowAlertError;
bool get isButtonEnabled => isChecked.value && phoneNumber.value.isPhoneValid();
String get content => _info?.value?.content ?? "";
String get url => _info?.value?.url ?? "";
String get content => _info.value?.content ?? "";
String get url => _info.value?.url ?? "";
void updatePhoneNumber(String value) {
phoneNumber.value = value;
......
import 'package:flutter/material.dart';
import 'package:mypoint_flutter_app/widgets/custom_app_bar.dart';
import '../../directional/directional_screen.dart';
import '../../widgets/custom_navigation_bar.dart';
import '../../shared/navigation/directional_screen.dart';
import '../../shared/widgets/custom_navigation_bar.dart';
class _OrderMenuItem {
final String title;
......@@ -28,7 +26,7 @@ class OrderMenuScreen extends StatelessWidget {
color: Colors.white,
child: ListView.separated(
itemCount: items.length,
separatorBuilder: (_, __) => const Divider(height: 1),
separatorBuilder: (_, _) => const Divider(height: 1),
itemBuilder: (context, index) {
final item = items[index];
return InkWell(
......
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 '../../configs/constants.dart';
import '../../preference/data_preference.dart';
import '../../widgets/custom_toast_message.dart';
import '../../shared/widgets/base_view/base_response_model.dart';
import '../../core/network/restful_api_viewmodel.dart';
import '../../app/config/constants.dart';
import '../../shared/preferences/data_preference.dart';
import '../../shared/widgets/custom_toast_message.dart';
import 'otp_viewmodel.dart';
class DeleteAccountOtpRepository extends RestfulApiViewModel implements IOtpRepository {
......
import 'package:get/get.dart';
import 'package:get/get_core/src/get_main.dart';
import 'package:mypoint_flutter_app/base/base_response_model.dart';
import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart';
import 'package:mypoint_flutter_app/screen/create_pass/create_pass_screen.dart';
import 'package:mypoint_flutter_app/screen/create_pass/reset_create_password_repository.dart';
import '../../networking/restful_api_viewmodel.dart';
import '../splash/splash_screen_viewmodel.dart';
import 'package:mypoint_flutter_app/shared/widgets/base_view/base_response_model.dart';
import 'package:mypoint_flutter_app/core/network/restful_api_client_all_request.dart';
import 'package:mypoint_flutter_app/features/create_pass/create_pass_screen.dart';
import 'package:mypoint_flutter_app/features/create_pass/reset_create_password_repository.dart';
import '../../core/network/restful_api_viewmodel.dart';
import 'otp_viewmodel.dart';
class ForgotPassOTPRepository extends RestfulApiViewModel implements IOtpRepository {
......
import 'package:json_annotation/json_annotation.dart';
import '../../../base/base_response_model.dart';
import '../../../shared/widgets/base_view/base_response_model.dart';
part 'create_otp_response_model.g.dart';
@JsonSerializable()
......
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