TF-788 Add Click action to UserInformationWidget

This commit is contained in:
Dat PHAM HOANG
2022-08-24 12:10:27 +07:00
committed by Dat H. Pham
parent dc0c3ee445
commit 9283f88b24
3 changed files with 32 additions and 18 deletions
@@ -171,9 +171,13 @@ class MailboxView extends GetWidget<MailboxController> {
padding: EdgeInsets.only(
left: _responsiveUtils.isLandscapeMobile(context) ? 0 : 16,
right: 16),
child: (UserInformationWidgetBuilder(_imagePaths, context, controller.mailboxDashBoardController.userProfile.value)
..addOnLogoutAction(() => controller.mailboxDashBoardController.goToSettings()))
.build()),
child: (UserInformationWidgetBuilder(
_imagePaths,
context,
controller.mailboxDashBoardController.userProfile.value,
subtitle: AppLocalizations.of(context).manage_account)
..addOnSubtitleClick(() => controller.mailboxDashBoardController.goToSettings()))
.build()),
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2)
]);
}
@@ -198,8 +198,12 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
child: Column(children: [
Padding(
padding: const EdgeInsets.only(left: 16, bottom: 10),
child: (UserInformationWidgetBuilder(_imagePaths, context, controller.mailboxDashBoardController.userProfile.value)
..addOnLogoutAction(() => controller.mailboxDashBoardController.goToSettings()))
child: (UserInformationWidgetBuilder(
_imagePaths,
context,
controller.mailboxDashBoardController.userProfile.value,
subtitle: AppLocalizations.of(context).manage_account)
..addOnSubtitleClick(() => controller.mailboxDashBoardController.goToSettings()))
.build()),
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2)
]),
@@ -7,23 +7,27 @@ import 'package:get/get_utils/src/platform/platform.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
typedef OnLogoutActionClick = void Function();
typedef OnSubtitleClick = void Function();
class UserInformationWidgetBuilder {
final ImagePaths _imagePaths;
final UserProfile? _userProfile;
final BuildContext _context;
final String? subtitle;
OnLogoutActionClick? _onLogoutActionClick;
OnSubtitleClick? _onSubtitleClick;
UserInformationWidgetBuilder(
this._imagePaths,
this._context,
this._userProfile,
{
this.subtitle
}
);
void addOnLogoutAction(OnLogoutActionClick onLogoutActionClick) {
_onLogoutActionClick = onLogoutActionClick;
void addOnSubtitleClick(OnSubtitleClick onLogoutActionClick) {
_onSubtitleClick = onLogoutActionClick;
}
Widget build() {
@@ -55,23 +59,25 @@ class UserInformationWidgetBuilder {
style: const TextStyle(fontSize: 17, color: AppColor.colorNameEmail, fontWeight: FontWeight.w600)
)
),
Padding(
padding: const EdgeInsets.only(left: 10),
child: Material(
borderRadius: BorderRadius.circular(20),
color: Colors.transparent,
child: Align(
subtitle != null
? Padding(
padding: const EdgeInsets.only(left: 10),
child: Material(
borderRadius: BorderRadius.circular(20),
color: Colors.transparent,
child: Align(
alignment: Alignment.centerLeft,
child: TextButton(
onPressed: () => _onLogoutActionClick?.call(),
onPressed: () => _onSubtitleClick?.call(),
child: Text(
AppLocalizations.of(_context).manage_account,
style: const TextStyle(fontSize: 14, color: AppColor.colorTextButton),
),
)
)
)
)
)
)
: const SizedBox.shrink()
])),
if (!kIsWeb)
Transform(