Commit 55151ba2 authored by DatHV's avatar DatHV
Browse files

update history point, manager

parent f714cdcc
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:get/get_core/src/get_main.dart'; import 'package:get/get_core/src/get_main.dart';
import 'package:get/get_rx/src/rx_types/rx_types.dart'; import 'package:get/get_rx/src/rx_types/rx_types.dart';
import 'package:mypoint_flutter_app/networking/restful_api_request.dart'; import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart';
import '../../base/restful_api_viewmodel.dart'; import '../../networking/restful_api_viewmodel.dart';
import 'location_address_screen.dart'; import 'location_address_screen.dart';
import 'models/district_address_model.dart'; import 'models/district_address_model.dart';
import 'models/province_address_model.dart'; import 'models/province_address_model.dart';
......
import 'dart:convert'; import 'dart:convert';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:mypoint_flutter_app/configs/constants.dart'; import 'package:mypoint_flutter_app/configs/constants.dart';
import 'package:mypoint_flutter_app/networking/restful_api_request.dart'; import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart';
import 'package:mypoint_flutter_app/screen/otp/forgot_pass_otp_repository.dart'; import 'package:mypoint_flutter_app/screen/otp/forgot_pass_otp_repository.dart';
import 'package:mypoint_flutter_app/screen/otp/otp_screen.dart'; import 'package:mypoint_flutter_app/screen/otp/otp_screen.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 '../../base/base_response_model.dart';
import '../../base/restful_api_viewmodel.dart'; import '../../networking/restful_api_viewmodel.dart';
import '../../model/auth/login_token_response_model.dart'; import '../../model/auth/login_token_response_model.dart';
import '../../permission/biometric_manager.dart'; import '../../permission/biometric_manager.dart';
import '../../preference/data_preference.dart'; import '../../preference/data_preference.dart';
...@@ -72,7 +72,7 @@ class LoginViewModel extends RestfulApiViewModel { ...@@ -72,7 +72,7 @@ class LoginViewModel extends RestfulApiViewModel {
final userProfile = value.data; final userProfile = value.data;
if (value.isSuccess && userProfile != null) { if (value.isSuccess && userProfile != null) {
await DataPreference.instance.saveUserProfile(userProfile); await DataPreference.instance.saveUserProfile(userProfile);
Get.toNamed(mainScreen); Get.offAllNamed(mainScreen);
} else { } else {
DataPreference.instance.clearLoginToken(); DataPreference.instance.clearLoginToken();
final mgs = value.errorMessage ?? Constants.commonError; final mgs = value.errorMessage ?? Constants.commonError;
...@@ -94,14 +94,12 @@ class LoginViewModel extends RestfulApiViewModel { ...@@ -94,14 +94,12 @@ class LoginViewModel extends RestfulApiViewModel {
showLoading(); showLoading();
client.otpCreateNew(phone).then((value) { client.otpCreateNew(phone).then((value) {
hideLoading(); hideLoading();
// TODO: handle error later if (!value.isSuccess) return;
if (value.isSuccess) { Get.to(
Get.to( OtpScreen(
OtpScreen( repository: ForgotPassOTPRepository(phone, value.data?.resendAfterSecond ?? Constants.otpTtl),
repository: ForgotPassOTPRepository(phone, value.data?.resendAfterSecond ?? Constants.otpTtl), ),
), );
);
}
}); });
} }
......
...@@ -6,6 +6,7 @@ import 'package:mypoint_flutter_app/extensions/string_extension.dart'; ...@@ -6,6 +6,7 @@ import 'package:mypoint_flutter_app/extensions/string_extension.dart';
import '../../preference/data_preference.dart'; import '../../preference/data_preference.dart';
import '../../resources/base_color.dart'; import '../../resources/base_color.dart';
import '../../shared/router_gage.dart';
import '../../widgets/image_loader.dart'; import '../../widgets/image_loader.dart';
import '../../widgets/measure_size.dart'; import '../../widgets/measure_size.dart';
import 'models/membership_level_model.dart'; import 'models/membership_level_model.dart';
...@@ -95,7 +96,7 @@ class MemberLevelHeaderWidget extends StatelessWidget { ...@@ -95,7 +96,7 @@ class MemberLevelHeaderWidget extends StatelessWidget {
Expanded( Expanded(
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
Get.toNamed('/pointHistoryScreen'); Get.toNamed(historyPointScreen);
}, },
behavior: HitTestBehavior.opaque, behavior: HitTestBehavior.opaque,
child: Column( child: Column(
......
...@@ -24,7 +24,6 @@ class _MembershipScreenState extends BaseState<MembershipScreen> with BasicState ...@@ -24,7 +24,6 @@ class _MembershipScreenState extends BaseState<MembershipScreen> with BasicState
void initState() { void initState() {
super.initState(); super.initState();
_viewModel = Get.put(MembershipViewModel()); _viewModel = Get.put(MembershipViewModel());
// _viewModel.getMembershipLevelInfo();
} }
@override @override
......
import 'package:flutter/foundation.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:mypoint_flutter_app/extensions/collection_extension.dart'; import 'package:mypoint_flutter_app/extensions/collection_extension.dart';
import 'package:mypoint_flutter_app/networking/restful_api_request.dart'; import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart';
import '../../base/restful_api_viewmodel.dart'; import '../../networking/restful_api_viewmodel.dart';
import 'models/membership_info_response.dart'; import 'models/membership_info_response.dart';
import 'models/membership_level_model.dart'; import 'models/membership_level_model.dart';
import 'models/membership_level_term_and_condition_model.dart'; import 'models/membership_level_term_and_condition_model.dart';
...@@ -20,7 +21,8 @@ class MembershipViewModel extends RestfulApiViewModel { ...@@ -20,7 +21,8 @@ class MembershipViewModel extends RestfulApiViewModel {
if (levels == null || levels!.isEmpty) { if (levels == null || levels!.isEmpty) {
return null; return null;
} }
return levels?.safe(selectedTab.value)?.conditions; final level = levels!.safe(selectedTab.value);
return level?.conditions;
} }
@override @override
...@@ -29,24 +31,42 @@ class MembershipViewModel extends RestfulApiViewModel { ...@@ -29,24 +31,42 @@ class MembershipViewModel extends RestfulApiViewModel {
getMembershipLevelInfo(); getMembershipLevelInfo();
} }
_makeSelectedLevel() { void _makeSelectedLevel() {
if (levels == null || levels!.isEmpty) { if (levels == null || levels!.isEmpty) {
selectedLevel = null; selectedLevel = null;
return; return;
} }
selectedLevel = levels!.firstWhere((e) => e.levelStartAtDate?.isNotEmpty == true, orElse: () => levels!.first); try {
selectedLevel = levels!.firstWhere(
(e) => e.levelStartAtDate?.isNotEmpty == true,
orElse: () => levels!.first
);
} catch (e) {
if (kDebugMode) {
print('Failed to select level: $e');
}
selectedLevel = levels!.isNotEmpty ? levels!.first : null;
}
} }
getMembershipLevelInfo() async { Future<void> getMembershipLevelInfo() async {
showLoading(); showLoading();
try { try {
final response = await client.getMembershipLevelInfo(); final response = await client.getMembershipLevelInfo();
membershipInfo.value = response.data; if (response.isSuccess && response.data != null) {
_makeSelectedLevel(); membershipInfo.value = response.data;
hideLoading(); _makeSelectedLevel();
} else {
if (kDebugMode) {
print("Failed to get membership info: ${response.errorMessage}");
}
}
} catch (e) { } catch (e) {
if (kDebugMode) {
print("Error fetching membership level info: $e");
}
} finally {
hideLoading(); hideLoading();
print("Error fetching membership level info: $e");
} }
} }
} }
import 'package:get/get_rx/src/rx_types/rx_types.dart'; import 'package:get/get_rx/src/rx_types/rx_types.dart';
import 'package:mypoint_flutter_app/configs/constants.dart'; import 'package:mypoint_flutter_app/configs/constants.dart';
import 'package:mypoint_flutter_app/networking/restful_api_request.dart'; import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart';
import 'package:mypoint_flutter_app/screen/mobile_card/models/product_mobile_card_model.dart'; import 'package:mypoint_flutter_app/screen/mobile_card/models/product_mobile_card_model.dart';
import '../../base/restful_api_viewmodel.dart'; import '../../networking/restful_api_viewmodel.dart';
import '../../preference/point/point_manager.dart'; import '../../preference/point/point_manager.dart';
import 'models/usable_voucher_model.dart'; import 'models/usable_voucher_model.dart';
......
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:mypoint_flutter_app/networking/restful_api_request.dart'; import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart';
import '../../base/restful_api_viewmodel.dart'; import '../../networking/restful_api_viewmodel.dart';
import '../../preference/data_preference.dart'; import '../../preference/data_preference.dart';
import '../faqs/faqs_model.dart'; import '../faqs/faqs_model.dart';
......
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:mypoint_flutter_app/configs/constants.dart'; import 'package:mypoint_flutter_app/configs/constants.dart';
import 'package:mypoint_flutter_app/networking/restful_api_request.dart'; import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart';
import '../../base/restful_api_viewmodel.dart'; import '../../networking/restful_api_viewmodel.dart';
import '../../preference/data_preference.dart'; import '../../preference/data_preference.dart';
import 'models/category_notify_item_model.dart'; import 'models/category_notify_item_model.dart';
import 'models/notification_item_model.dart'; import 'models/notification_item_model.dart';
......
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:mypoint_flutter_app/extensions/string_extension.dart'; import 'package:mypoint_flutter_app/extensions/string_extension.dart';
import 'package:mypoint_flutter_app/networking/restful_api_request.dart'; import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart';
import '../../base/base_response_model.dart'; import '../../base/base_response_model.dart';
import '../../base/restful_api_viewmodel.dart'; import '../../networking/restful_api_viewmodel.dart';
import 'model/check_phone_response_model.dart'; import 'model/check_phone_response_model.dart';
import 'model/onboarding_info_model.dart'; import 'model/onboarding_info_model.dart';
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:mypoint_flutter_app/networking/restful_api_request.dart'; import 'package:mypoint_flutter_app/networking/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 '../../base/base_response_model.dart';
import '../../base/restful_api_viewmodel.dart'; import '../../networking/restful_api_viewmodel.dart';
import '../../configs/constants.dart'; import '../../configs/constants.dart';
import '../../preference/data_preference.dart'; import '../../preference/data_preference.dart';
import '../../widgets/custom_toast_message.dart'; import '../../widgets/custom_toast_message.dart';
......
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:get/get_core/src/get_main.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/base/base_response_model.dart';
import 'package:mypoint_flutter_app/networking/restful_api_request.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/create_pass_screen.dart';
import 'package:mypoint_flutter_app/screen/create_pass/reset_create_password_repository.dart'; import 'package:mypoint_flutter_app/screen/create_pass/reset_create_password_repository.dart';
import '../../base/restful_api_viewmodel.dart'; import '../../networking/restful_api_viewmodel.dart';
import '../splash/splash_screen_viewmodel.dart'; import '../splash/splash_screen_viewmodel.dart';
import 'otp_viewmodel.dart'; import 'otp_viewmodel.dart';
......
// sign_up_otp_repository.dart // sign_up_otp_repository.dart
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:mypoint_flutter_app/networking/restful_api_request.dart'; import 'package:mypoint_flutter_app/networking/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 '../../base/base_response_model.dart';
import '../../base/restful_api_viewmodel.dart'; import '../../networking/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 '../login/login_screen.dart'; import '../login/login_screen.dart';
......
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mypoint_flutter_app/configs/constants.dart'; import 'package:mypoint_flutter_app/configs/constants.dart';
import 'package:mypoint_flutter_app/networking/restful_api_request.dart'; import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart';
import '../../base/base_response_model.dart'; import '../../base/base_response_model.dart';
import '../../base/restful_api_viewmodel.dart'; import '../../networking/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';
......
...@@ -2,7 +2,7 @@ import 'package:flutter/cupertino.dart'; ...@@ -2,7 +2,7 @@ import 'package:flutter/cupertino.dart';
import 'package:mypoint_flutter_app/extensions/datetime_extensions.dart'; import 'package:mypoint_flutter_app/extensions/datetime_extensions.dart';
import 'package:mypoint_flutter_app/preference/data_preference.dart'; import 'package:mypoint_flutter_app/preference/data_preference.dart';
import 'package:mypoint_flutter_app/screen/personal/personal_gender.dart'; import 'package:mypoint_flutter_app/screen/personal/personal_gender.dart';
import '../../networking/model_maker.dart'; import '../../configs/callbacks.dart';
import '../location_address/location_address_viewmodel.dart'; import '../location_address/location_address_viewmodel.dart';
enum SectionPersonalEditType { enum SectionPersonalEditType {
......
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:mypoint_flutter_app/extensions/string_extension.dart'; import 'package:mypoint_flutter_app/extensions/string_extension.dart';
import 'package:mypoint_flutter_app/networking/restful_api_request.dart'; import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart';
import 'package:mypoint_flutter_app/screen/personal/personal_edit_item_model.dart'; import 'package:mypoint_flutter_app/screen/personal/personal_edit_item_model.dart';
import 'package:mypoint_flutter_app/screen/personal/personal_gender.dart'; import 'package:mypoint_flutter_app/screen/personal/personal_gender.dart';
import '../../base/restful_api_viewmodel.dart'; import '../../networking/restful_api_viewmodel.dart';
import '../../configs/constants.dart'; import '../../configs/constants.dart';
import '../../preference/data_preference.dart'; import '../../preference/data_preference.dart';
import '../../shared/router_gage.dart'; import '../../shared/router_gage.dart';
......
...@@ -101,7 +101,10 @@ class _PersonalScreenState extends BaseState<PersonalScreen> with BasicState, Po ...@@ -101,7 +101,10 @@ class _PersonalScreenState extends BaseState<PersonalScreen> with BasicState, Po
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text(name, style: const TextStyle(fontSize: 22, fontWeight: FontWeight.bold, color: Colors.white)), Text(
name,
style: const TextStyle(fontSize: 22, fontWeight: FontWeight.bold, color: Colors.white),
),
if (email.isNotEmpty) if (email.isNotEmpty)
Text( Text(
email, email,
...@@ -126,20 +129,28 @@ class _PersonalScreenState extends BaseState<PersonalScreen> with BasicState, Po ...@@ -126,20 +129,28 @@ class _PersonalScreenState extends BaseState<PersonalScreen> with BasicState, Po
children: [ children: [
Image.asset("assets/images/ic_rank_gray.png", width: 30, height: 30, color: Colors.white), Image.asset("assets/images/ic_rank_gray.png", width: 30, height: 30, color: Colors.white),
const SizedBox(width: 4), const SizedBox(width: 4),
Text(level, style: const TextStyle(color: Colors.white, fontSize: 16, fontWeight: FontWeight.bold)), Text(
level,
style: const TextStyle(color: Colors.white, fontSize: 16, fontWeight: FontWeight.bold),
),
], ],
), ),
), ),
const Spacer(), const Spacer(),
Row( GestureDetector(
children: [ onTap: () {
Text( Get.toNamed(historyPointScreen);
(data.totalPointActive ?? 0).money(CurrencyUnit.point), },
style: const TextStyle(color: Colors.white, fontSize: 16, fontWeight: FontWeight.bold), child: Row(
), children: [
const SizedBox(width: 4), Text(
const Icon(Icons.chevron_right, color: Colors.white, size: 22), (data.totalPointActive ?? 0).money(CurrencyUnit.point),
], style: const TextStyle(color: Colors.white, fontSize: 16, fontWeight: FontWeight.bold),
),
const SizedBox(width: 4),
const Icon(Icons.chevron_right, color: Colors.white, size: 22),
],
),
), ),
], ],
), ),
...@@ -185,16 +196,32 @@ class _PersonalScreenState extends BaseState<PersonalScreen> with BasicState, Po ...@@ -185,16 +196,32 @@ class _PersonalScreenState extends BaseState<PersonalScreen> with BasicState, Po
Widget _buildMenuItems() { Widget _buildMenuItems() {
final menuItems = [ final menuItems = [
{'icon': Icons.monetization_on_outlined, 'title': 'Săn điểm', 'type': 'APP_SCREEN_POINT_HUNTING'}, {
'icon': Icons.monetization_on_outlined,
'assets': 'assets/images/ic_point.png',
'title': 'Săn điểm',
'type': 'APP_SCREEN_POINT_HUNTING',
},
{'icon': Icons.check_box_outlined, 'title': 'Check-in nhận quà', 'type': 'DAILY_CHECKIN'}, {'icon': Icons.check_box_outlined, 'title': 'Check-in nhận quà', 'type': 'DAILY_CHECKIN'},
{'icon': Icons.emoji_events_outlined, 'title': 'Bảng xếp hạng', 'type': 'APP_SCREEN_LIST_PAYMENT_OF_ELECTRIC'}, {'icon': Icons.border_right, 'title': 'Hoá đơn điện', 'type': 'APP_SCREEN_LIST_PAYMENT_OF_ELECTRIC'},
// {'icon': Icons.emoji_events_outlined, 'title': 'Bảng xếp hạng', 'type': 'APP_SCREEN_LIST_PAYMENT_OF_ELECTRIC'},
{'icon': Icons.gif_box_outlined, 'title': 'Ưu đãi của tôi', 'type': 'APP_SCREEN_MY_PURCHASE_ITEMS'}, {'icon': Icons.gif_box_outlined, 'title': 'Ưu đãi của tôi', 'type': 'APP_SCREEN_MY_PURCHASE_ITEMS'},
{'icon': Icons.receipt_long_outlined, 'title': 'Lịch sử giao dịch', 'sectionDivider': true, 'type': 'APP_SCREEN_TRANSACTION_HISTORIES'}, {
{'icon': Icons.history_outlined, 'title': 'Lịch sử điểm', 'type': 'APP_SCREEN_SURVERY_APP'}, 'icon': Icons.receipt_long_outlined,
{'icon': Icons.history_outlined, 'title': 'Lịch sử hoàn điểm', 'type': 'APP_SCREEN_REFUND_HISTORY'}, 'title': 'Lịch sử giao dịch',
'sectionDivider': true,
'type': 'APP_SCREEN_TRANSACTION_HISTORIES',
},
{'icon': Icons.history_outlined, 'title': 'Lịch sử điểm', 'type': 'APP_SCREEN_POINT_HISTORY'},
{'icon': Icons.history_edu, 'title': 'Lịch sử hoàn điểm', 'type': 'APP_SCREEN_REFUND_HISTORY'},
{'icon': Icons.account_balance_wallet_outlined, 'title': 'Quản lý tài khoản/thẻ', 'type': 'BANK_ACCOUNT_MANAGER'}, {'icon': Icons.account_balance_wallet_outlined, 'title': 'Quản lý tài khoản/thẻ', 'type': 'BANK_ACCOUNT_MANAGER'},
{'icon': Icons.favorite_border, 'title': 'Yêu thích', 'type': 'APP_SCREEN_CATEGORY_TAB_FAVORITE'}, {'icon': Icons.favorite_border, 'title': 'Yêu thích', 'type': 'APP_SCREEN_CATEGORY_TAB_FAVORITE'},
{'icon': Icons.shopping_bag_outlined, 'title': 'Đơn mua', 'sectionDivider': true, 'type': 'APP_SCREEN_ORDER_MENU'}, {
'icon': Icons.shopping_bag_outlined,
'title': 'Đơn mua',
'sectionDivider': true,
'type': 'APP_SCREEN_ORDER_MENU',
},
{'icon': Icons.info_outline, 'title': 'Giới thiệu MyPoint', 'sectionDivider': true, 'type': 'VIEW_WEBSITE_PAGE'}, {'icon': Icons.info_outline, 'title': 'Giới thiệu MyPoint', 'sectionDivider': true, 'type': 'VIEW_WEBSITE_PAGE'},
{'icon': Icons.headset_mic_outlined, 'title': 'Hỗ trợ', 'type': 'APP_SCREEN_CUSTOMER_FEEDBACK'}, {'icon': Icons.headset_mic_outlined, 'title': 'Hỗ trợ', 'type': 'APP_SCREEN_CUSTOMER_FEEDBACK'},
{'icon': Icons.settings_outlined, 'title': 'Cài đặt', 'type': 'APP_SCREEN_SETTING'}, {'icon': Icons.settings_outlined, 'title': 'Cài đặt', 'type': 'APP_SCREEN_SETTING'},
...@@ -225,11 +252,18 @@ class _PersonalScreenState extends BaseState<PersonalScreen> with BasicState, Po ...@@ -225,11 +252,18 @@ class _PersonalScreenState extends BaseState<PersonalScreen> with BasicState, Po
padding: const EdgeInsets.symmetric(horizontal: 16), padding: const EdgeInsets.symmetric(horizontal: 16),
child: Row( child: Row(
children: [ children: [
Icon( if (item['assets'] != null)
item['icon'] as IconData, Image.asset(
color: (item['color'] as Color?) ?? Colors.black54, item['assets'] as String,
size: 24, width: 24,
), height: 24,
)
else
Icon(
item['icon'] as IconData,
color: (item['color'] as Color?) ?? Colors.black54,
size: 24,
),
const SizedBox(width: 12), const SizedBox(width: 12),
Expanded( Expanded(
child: Text( child: Text(
...@@ -298,7 +332,7 @@ class _PersonalScreenState extends BaseState<PersonalScreen> with BasicState, Po ...@@ -298,7 +332,7 @@ class _PersonalScreenState extends BaseState<PersonalScreen> with BasicState, Po
final displayName = DataPreference.instance.displayName; final displayName = DataPreference.instance.displayName;
print("Safe back to login screen with phone: $phone, displayName: $displayName, found: $found"); print("Safe back to login screen with phone: $phone, displayName: $displayName, found: $found");
if (phone != null && found) { if (phone != null && found) {
Get.offAllNamed(loginScreen, arguments: {"phone": phone, 'fullName': displayName}); Get.offAllNamed(loginScreen, arguments: {"phone": phone, 'fullName': displayName});
} else { } else {
DataPreference.instance.clearData(); DataPreference.instance.clearData();
Get.offAllNamed(onboardingScreen); Get.offAllNamed(onboardingScreen);
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:get/get_core/src/get_main.dart'; import 'package:mypoint_flutter_app/screen/pipi/pipi_detail_viewmodel.dart';
import 'package:mypoint_flutter_app/screen/home/pipi_detail_viewmodel.dart';
import 'package:mypoint_flutter_app/widgets/image_loader.dart'; import 'package:mypoint_flutter_app/widgets/image_loader.dart';
import '../home/models/pipi_detail_model.dart';
import 'models/pipi_detail_model.dart';
class PipiDetailScreen extends StatefulWidget { class PipiDetailScreen extends StatefulWidget {
const PipiDetailScreen({super.key}); const PipiDetailScreen({super.key});
......
import 'package:get/get_rx/src/rx_types/rx_types.dart'; import 'package:get/get_rx/src/rx_types/rx_types.dart';
import 'package:mypoint_flutter_app/networking/restful_api_request.dart'; import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart';
import '../../base/restful_api_viewmodel.dart'; import '../../networking/restful_api_viewmodel.dart';
import 'models/pipi_detail_model.dart'; import '../home/models/pipi_detail_model.dart';
class PipiDetailViewModel extends RestfulApiViewModel { class PipiDetailViewModel extends RestfulApiViewModel {
var items = RxList<PipiSupportItemModel>(); var items = RxList<PipiSupportItemModel>();
......
import 'package:flutter/material.dart';
import '../../widgets/custom_navigation_bar.dart';
class PointHistoryScreen extends StatefulWidget {
const PointHistoryScreen({super.key});
@override
State<PointHistoryScreen> createState() => _PointHistoryScreenState();
}
class _PointHistoryScreenState extends State<PointHistoryScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: CustomNavigationBar(title: "Lịch sử điểm"),
body: SafeArea(
child: Center(child: Text('Point History Screen')),
),
);
}
}
import 'package:mypoint_flutter_app/networking/restful_api_request.dart'; import 'package:mypoint_flutter_app/networking/restful_api_client_all_request.dart';
import 'package:mypoint_flutter_app/screen/popup_manager/popup_manager_model.dart'; import 'package:mypoint_flutter_app/screen/popup_manager/popup_manager_model.dart';
import '../../base/restful_api_viewmodel.dart'; import '../../networking/restful_api_viewmodel.dart';
class PopupManagerViewModel extends RestfulApiViewModel { class PopupManagerViewModel extends RestfulApiViewModel {
PopupManagerViewModel._(); PopupManagerViewModel._();
......
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