Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Hoàng Văn Đạt
mypoint_flutter_app
Commits
6b980613
Commit
6b980613
authored
Nov 14, 2025
by
DatHV
Browse files
update project structure
parent
bfff9e47
Changes
507
Hide whitespace changes
Inline
Side-by-side
lib/
screen/home
/models/brand_model.g.dart
→
lib/
features/affiliate_brand_detail
/models/brand_model.g.dart
View file @
6b980613
// GENERATED CODE - DO NOT MODIFY BY HAND
// GENERATED CODE - DO NOT MODIFY BY HAND
part of
'brand_model.dart'
;
part of
'
../../affiliate_brand_detail/models/
brand_model.dart'
;
// **************************************************************************
// **************************************************************************
// JsonSerializableGenerator
// JsonSerializableGenerator
...
...
lib/
screen
/bank_account_manager/bank_account_detail_screen.dart
→
lib/
features
/bank_account_manager/bank_account_detail_screen.dart
View file @
6b980613
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:get/get.dart'
;
import
'package:get/get.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/alert/data_alert_model.dart'
;
import
'../../
shared/
widgets/alert/data_alert_model.dart'
;
import
'../../widgets/custom_navigation_bar.dart'
;
import
'../../
shared/
widgets/custom_navigation_bar.dart'
;
import
'../../widgets/custom_toast_message.dart'
;
import
'../../
shared/
widgets/custom_toast_message.dart'
;
import
'bank_account_detail_viewmodel.dart'
;
import
'bank_account_detail_viewmodel.dart'
;
import
'bank_account_info_model.dart'
;
import
'bank_account_info_model.dart'
;
...
...
lib/
screen
/bank_account_manager/bank_account_detail_viewmodel.dart
→
lib/
features
/bank_account_manager/bank_account_detail_viewmodel.dart
View file @
6b980613
import
'package:get/get.dart'
;
import
'package:get/get.dart'
;
import
'package:mypoint_flutter_app/config
s
/constants.dart'
;
import
'package:mypoint_flutter_app/
app/
config/constants.dart'
;
import
'package:mypoint_flutter_app/network
ing
/restful_api_client_all_request.dart'
;
import
'package:mypoint_flutter_app/
core/
network/restful_api_client_all_request.dart'
;
import
'package:mypoint_flutter_app/widgets/custom_toast_message.dart'
;
import
'package:mypoint_flutter_app/
shared/
widgets/custom_toast_message.dart'
;
import
'../../network
ing
/restful_api_viewmodel.dart'
;
import
'../../
core/
network/restful_api_viewmodel.dart'
;
import
'bank_account_info_model.dart'
;
import
'bank_account_info_model.dart'
;
class
BankAccountDetailViewModel
extends
RestfulApiViewModel
{
class
BankAccountDetailViewModel
extends
RestfulApiViewModel
{
...
...
lib/
screen
/bank_account_manager/bank_account_info_model.dart
→
lib/
features
/bank_account_manager/bank_account_info_model.dart
View file @
6b980613
File moved
lib/
screen
/bank_account_manager/bank_account_info_model.g.dart
→
lib/
features
/bank_account_manager/bank_account_info_model.g.dart
View file @
6b980613
File moved
lib/
screen
/bank_account_manager/bank_account_manager_screen.dart
→
lib/
features
/bank_account_manager/bank_account_manager_screen.dart
View file @
6b980613
import
'package:flutter/foundation.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/widgets/custom_empty_widget.dart'
;
import
'package:mypoint_flutter_app/
shared/
widgets/custom_empty_widget.dart'
;
import
'package:mypoint_flutter_app/widgets/image_loader.dart'
;
import
'package:mypoint_flutter_app/
shared/
widgets/image_loader.dart'
;
import
'../../widgets/custom_navigation_bar.dart'
;
import
'../../
shared/
widgets/custom_navigation_bar.dart'
;
import
'bank_account_detail_screen.dart'
;
import
'bank_account_detail_screen.dart'
;
import
'bank_account_info_model.dart'
;
import
'bank_account_info_model.dart'
;
import
'bank_account_manager_viewmodel.dart'
;
import
'bank_account_manager_viewmodel.dart'
;
...
@@ -31,7 +30,7 @@ class _BankAccountManagerScreenState extends State<BankAccountManagerScreen> {
...
@@ -31,7 +30,7 @@ class _BankAccountManagerScreenState extends State<BankAccountManagerScreen> {
child:
ListView
.
separated
(
child:
ListView
.
separated
(
padding:
const
EdgeInsets
.
symmetric
(
vertical:
8
),
padding:
const
EdgeInsets
.
symmetric
(
vertical:
8
),
itemCount:
viewModel
.
bankAccounts
.
length
,
itemCount:
viewModel
.
bankAccounts
.
length
,
separatorBuilder:
(
_
,
_
_
)
=>
const
Divider
(
height:
1
,
thickness:
1
),
separatorBuilder:
(
_
,
_
)
=>
const
Divider
(
height:
1
,
thickness:
1
),
itemBuilder:
(
item
,
index
)
=>
_BankAccountItem
(
model:
viewModel
.
bankAccounts
.
value
[
index
],
onTap:
()
async
{
itemBuilder:
(
item
,
index
)
=>
_BankAccountItem
(
model:
viewModel
.
bankAccounts
.
value
[
index
],
onTap:
()
async
{
await
Get
.
to
(()
=>
BankAccountDetailScreen
(
await
Get
.
to
(()
=>
BankAccountDetailScreen
(
model:
viewModel
.
bankAccounts
.
value
[
index
],
model:
viewModel
.
bankAccounts
.
value
[
index
],
...
...
lib/
screen
/bank_account_manager/bank_account_manager_viewmodel.dart
→
lib/
features
/bank_account_manager/bank_account_manager_viewmodel.dart
View file @
6b980613
import
'package:get/get.dart'
;
import
'package:get/get.dart'
;
import
'package:mypoint_flutter_app/network
ing
/restful_api_client_all_request.dart'
;
import
'package:mypoint_flutter_app/
core/
network/restful_api_client_all_request.dart'
;
import
'../../network
ing
/restful_api_viewmodel.dart'
;
import
'../../
core/
network/restful_api_viewmodel.dart'
;
import
'bank_account_info_model.dart'
;
import
'bank_account_info_model.dart'
;
class
BankAccountManagerViewModel
extends
RestfulApiViewModel
{
class
BankAccountManagerViewModel
extends
RestfulApiViewModel
{
...
...
lib/
screen
/biometric/biometric_screen.dart
→
lib/
features
/biometric/biometric_screen.dart
View file @
6b980613
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:get/get.dart'
;
import
'package:get/get.dart'
;
import
'package:local_auth/local_auth.dart'
;
import
'package:local_auth/local_auth.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/alert/data_alert_model.dart'
;
import
'../../
shared/
widgets/alert/data_alert_model.dart'
;
import
'../main_tab_screen/main_tab_screen.dart'
;
import
'../main_tab_screen/main_tab_screen.dart'
;
import
'biometric_viewmodel.dart'
;
import
'biometric_viewmodel.dart'
;
class
BiometricAuthScreen
extends
BaseScreen
{
class
BiometricAuthScreen
extends
BaseScreen
{
const
BiometricAuthScreen
({
super
.
key
});
const
BiometricAuthScreen
({
super
.
key
});
...
...
lib/
screen
/biometric/biometric_viewmodel.dart
→
lib/
features
/biometric/biometric_viewmodel.dart
View file @
6b980613
import
'package:flutter/foundation.dart'
;
import
'package:flutter/foundation.dart'
;
import
'package:get/get.dart'
;
import
'package:get/get.dart'
;
import
'package:local_auth/local_auth.dart'
;
import
'package:local_auth/local_auth.dart'
;
import
'package:mypoint_flutter_app/network
ing
/restful_api_client_all_request.dart'
;
import
'package:mypoint_flutter_app/
core/
network/restful_api_client_all_request.dart'
;
import
'../../network
ing
/restful_api_viewmodel.dart'
;
import
'../../
core/
network/restful_api_viewmodel.dart'
;
import
'../../config
s
/constants.dart'
;
import
'../../
app/
config/constants.dart'
;
import
'../../preference/data_preference.dart'
;
import
'../../
shared/
preference
s
/data_preference.dart'
;
class
BiometricViewModel
extends
RestfulApiViewModel
{
class
BiometricViewModel
extends
RestfulApiViewModel
{
final
LocalAuthentication
_localAuth
=
LocalAuthentication
();
final
LocalAuthentication
_localAuth
=
LocalAuthentication
();
...
@@ -20,7 +20,7 @@ class BiometricViewModel extends RestfulApiViewModel {
...
@@ -20,7 +20,7 @@ class BiometricViewModel extends RestfulApiViewModel {
Future
<
void
>
checkBiometricType
()
async
{
Future
<
void
>
checkBiometricType
()
async
{
try
{
try
{
bool
canCheckBiometrics
=
await
_localAuth
.
canCheckBiometrics
;
bool
_
=
await
_localAuth
.
canCheckBiometrics
;
List
<
BiometricType
>
availableBiometrics
=
await
_localAuth
.
getAvailableBiometrics
();
List
<
BiometricType
>
availableBiometrics
=
await
_localAuth
.
getAvailableBiometrics
();
if
(
availableBiometrics
.
contains
(
BiometricType
.
face
))
{
if
(
availableBiometrics
.
contains
(
BiometricType
.
face
))
{
biometricType
.
value
=
BiometricType
.
face
;
biometricType
.
value
=
BiometricType
.
face
;
...
...
lib/model
/auth
/biometric_register_response_model.dart
→
lib/
features/biometric/
model/biometric_register_response_model.dart
View file @
6b980613
import
'package:json_annotation/json_annotation.dart'
;
import
'package:json_annotation/json_annotation.dart'
;
part
'biometric_register_response_model.g.dart'
;
part
'biometric_register_response_model.g.dart'
;
@JsonSerializable
()
@JsonSerializable
()
class
BiometricRegisterResponseModel
{
class
BiometricRegisterResponseModel
{
final
String
?
bioToken
;
final
String
?
bioToken
;
...
...
lib/model
/auth
/biometric_register_response_model.g.dart
→
lib/
features/biometric/
model/biometric_register_response_model.g.dart
View file @
6b980613
File moved
lib/
screen
/campaign7day/campaign_7day_guide_dialog.dart
→
lib/
features
/campaign7day/campaign_7day_guide_dialog.dart
View file @
6b980613
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
'../../
resources
/base_color.dart'
;
import
'../../
core/theme
/base_color.dart'
;
class
Campaign7DayGuideDialog
extends
StatelessWidget
{
class
Campaign7DayGuideDialog
extends
StatelessWidget
{
final
String
title
;
final
String
title
;
...
...
lib/
screen
/campaign7day/campaign_7day_mission_info_dialog.dart
→
lib/
features
/campaign7day/campaign_7day_mission_info_dialog.dart
View file @
6b980613
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
'../../
resources
/base_color.dart'
;
import
'../../
core/theme
/base_color.dart'
;
import
'models/campaign_7day_mission_model.dart'
;
import
'models/campaign_7day_mission_model.dart'
;
class
Campaign7DayMissionInfoDialog
extends
StatelessWidget
{
class
Campaign7DayMissionInfoDialog
extends
StatelessWidget
{
...
...
lib/
screen
/campaign7day/campaign_7day_reward_dialog.dart
→
lib/
features
/campaign7day/campaign_7day_reward_dialog.dart
View file @
6b980613
...
@@ -31,7 +31,7 @@ class Campaign7DayRewardDialog extends StatelessWidget {
...
@@ -31,7 +31,7 @@ class Campaign7DayRewardDialog extends StatelessWidget {
shrinkWrap:
true
,
shrinkWrap:
true
,
physics:
const
BouncingScrollPhysics
(),
physics:
const
BouncingScrollPhysics
(),
itemCount:
rewards
.
length
,
itemCount:
rewards
.
length
,
separatorBuilder:
(
_
,
_
_
)
=>
const
SizedBox
(
height:
12
),
separatorBuilder:
(
_
,
_
)
=>
const
SizedBox
(
height:
12
),
itemBuilder:
(
context
,
index
)
{
itemBuilder:
(
context
,
index
)
{
return
Campaign7DayRewardItem
(
model:
rewards
[
index
]);
return
Campaign7DayRewardItem
(
model:
rewards
[
index
]);
},
},
...
...
lib/
screen
/campaign7day/campaign_7day_screen.dart
→
lib/
features
/campaign7day/campaign_7day_screen.dart
View file @
6b980613
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/widgets/custom_empty_widget.dart'
;
import
'package:mypoint_flutter_app/core/utils/extensions/string_extension.dart'
;
import
'../../base/base_screen.dart'
;
import
'package:mypoint_flutter_app/shared/widgets/custom_empty_widget.dart'
;
import
'../../base/basic_state.dart'
;
import
'../../shared/widgets/base_view/base_screen.dart'
;
import
'../../resources/base_color.dart'
;
import
'../../shared/widgets/base_view/basic_state.dart'
;
import
'../../widgets/bottom_sheet_helper.dart'
;
import
'../../core/theme/base_color.dart'
;
import
'../../shared/widgets/bottom_sheet_helper.dart'
;
import
'../home/custom_widget/hover_view_widget.dart'
;
import
'../home/custom_widget/hover_view_widget.dart'
;
import
'campaign_7day_guide_dialog.dart'
;
import
'campaign_7day_guide_dialog.dart'
;
import
'campaign_7day_mission_info_dialog.dart'
;
import
'campaign_7day_mission_info_dialog.dart'
;
...
@@ -29,18 +30,18 @@ class _Campaign7DayScreenState extends BaseState<Campaign7DayScreen> with BasicS
...
@@ -29,18 +30,18 @@ class _Campaign7DayScreenState extends BaseState<Campaign7DayScreen> with BasicS
@override
@override
void
initState
()
{
void
initState
()
{
super
.
initState
();
super
.
initState
();
String
?
campaignId
=
'1'
;
String
?
campaignId
;
final
args
=
Get
.
arguments
;
final
args
=
Get
.
arguments
;
if
(
args
is
String
)
{
if
(
args
is
String
)
{
campaignId
=
args
;
campaignId
=
args
;
}
}
if
(
campaignId
==
null
)
{
if
(
campaignId
.
orEmpty
.
isEmpty
)
{
WidgetsBinding
.
instance
.
addPostFrameCallback
((
_
)
{
WidgetsBinding
.
instance
.
addPostFrameCallback
((
_
)
{
Get
.
back
();
Get
.
back
();
});
});
return
;
return
;
}
}
_viewModel
=
Get
.
put
(
Campaign7DayViewModel
(
campaignId:
campaignId
));
_viewModel
=
Get
.
put
(
Campaign7DayViewModel
(
campaignId:
campaignId
??
''
));
_viewModel
.
getLiveTransactions
();
_viewModel
.
getLiveTransactions
();
_viewModel
.
getCampaign7DayInfo
();
_viewModel
.
getCampaign7DayInfo
();
_viewModel
.
onShowAlertError
=
(
message
,
onBack
)
{
_viewModel
.
onShowAlertError
=
(
message
,
onBack
)
{
...
...
lib/
screen
/campaign7day/campaign_7day_viewmodel.dart
→
lib/
features
/campaign7day/campaign_7day_viewmodel.dart
View file @
6b980613
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/network
ing
/restful_api_client_all_request.dart'
;
import
'package:mypoint_flutter_app/
core/
network/restful_api_client_all_request.dart'
;
import
'../../network
ing
/restful_api_viewmodel.dart'
;
import
'../../
core/
network/restful_api_viewmodel.dart'
;
import
'../../config
s
/constants.dart'
;
import
'../../
app/
config/constants.dart'
;
import
'models/campaign_7day_info_model.dart'
;
import
'models/campaign_7day_info_model.dart'
;
import
'models/campaign_7day_mission_model.dart'
;
import
'models/campaign_7day_mission_model.dart'
;
import
'models/campaign_7day_reward_model.dart'
;
import
'models/campaign_7day_reward_model.dart'
;
...
@@ -59,7 +59,7 @@ class Campaign7DayViewModel extends RestfulApiViewModel {
...
@@ -59,7 +59,7 @@ class Campaign7DayViewModel extends RestfulApiViewModel {
if
(!
mission
.
isReady
)
return
;
if
(!
mission
.
isReady
)
return
;
callApi
<
void
>(
callApi
<
void
>(
request:
()
=>
client
.
submitPerformMission
(
mission
,
campaignId
),
request:
()
=>
client
.
submitPerformMission
(
mission
,
campaignId
),
onSuccess:
(
_
,
_
_
)
{
onSuccess:
(
_
,
_
)
{
getCampaign7DayInfo
(
silent:
true
);
getCampaign7DayInfo
(
silent:
true
);
if
(
mission
.
popup
!=
null
)
{
if
(
mission
.
popup
!=
null
)
{
submitPerformMissionResponse
?.
call
(
mission
);
submitPerformMissionResponse
?.
call
(
mission
);
...
...
lib/
screen
/campaign7day/custom_widgets/campaign_7day_marguee_bar.dart
→
lib/
features
/campaign7day/custom_widgets/campaign_7day_marguee_bar.dart
View file @
6b980613
File moved
lib/
screen
/campaign7day/custom_widgets/campaign_7day_mission_card_item.dart
→
lib/
features
/campaign7day/custom_widgets/campaign_7day_mission_card_item.dart
View file @
6b980613
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:mypoint_flutter_app/widgets/image_loader.dart'
;
import
'package:mypoint_flutter_app/
shared/
widgets/image_loader.dart'
;
import
'../../../
resources
/base_color.dart'
;
import
'../../../
core/theme
/base_color.dart'
;
import
'../models/campaign_7day_mission_model.dart'
;
import
'../models/campaign_7day_mission_model.dart'
;
class
Campaign7DayMissionCardItem
extends
StatelessWidget
{
class
Campaign7DayMissionCardItem
extends
StatelessWidget
{
...
...
lib/
screen
/campaign7day/custom_widgets/campaign_7day_progress_box.dart
→
lib/
features
/campaign7day/custom_widgets/campaign_7day_progress_box.dart
View file @
6b980613
File moved
lib/
screen
/campaign7day/custom_widgets/campaign_7day_reward_item.dart
→
lib/
features
/campaign7day/custom_widgets/campaign_7day_reward_item.dart
View file @
6b980613
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
'../../../
resources
/base_color.dart'
;
import
'../../../
core/theme
/base_color.dart'
;
import
'../models/campaign_7day_reward_model.dart'
;
import
'../models/campaign_7day_reward_model.dart'
;
class
Campaign7DayRewardItem
extends
StatelessWidget
{
class
Campaign7DayRewardItem
extends
StatelessWidget
{
...
...
Prev
1
2
3
4
5
6
7
8
9
10
…
26
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment