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( padding: EdgeInsets.only(
left: _responsiveUtils.isLandscapeMobile(context) ? 0 : 16, left: _responsiveUtils.isLandscapeMobile(context) ? 0 : 16,
right: 16), right: 16),
child: (UserInformationWidgetBuilder(_imagePaths, context, controller.mailboxDashBoardController.userProfile.value) child: (UserInformationWidgetBuilder(
..addOnLogoutAction(() => controller.mailboxDashBoardController.goToSettings())) _imagePaths,
.build()), 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) 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: [ child: Column(children: [
Padding( Padding(
padding: const EdgeInsets.only(left: 16, bottom: 10), padding: const EdgeInsets.only(left: 16, bottom: 10),
child: (UserInformationWidgetBuilder(_imagePaths, context, controller.mailboxDashBoardController.userProfile.value) child: (UserInformationWidgetBuilder(
..addOnLogoutAction(() => controller.mailboxDashBoardController.goToSettings())) _imagePaths,
context,
controller.mailboxDashBoardController.userProfile.value,
subtitle: AppLocalizations.of(context).manage_account)
..addOnSubtitleClick(() => controller.mailboxDashBoardController.goToSettings()))
.build()), .build()),
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2) 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:model/model.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
typedef OnLogoutActionClick = void Function(); typedef OnSubtitleClick = void Function();
class UserInformationWidgetBuilder { class UserInformationWidgetBuilder {
final ImagePaths _imagePaths; final ImagePaths _imagePaths;
final UserProfile? _userProfile; final UserProfile? _userProfile;
final BuildContext _context; final BuildContext _context;
final String? subtitle;
OnLogoutActionClick? _onLogoutActionClick; OnSubtitleClick? _onSubtitleClick;
UserInformationWidgetBuilder( UserInformationWidgetBuilder(
this._imagePaths, this._imagePaths,
this._context, this._context,
this._userProfile, this._userProfile,
{
this.subtitle
}
); );
void addOnLogoutAction(OnLogoutActionClick onLogoutActionClick) { void addOnSubtitleClick(OnSubtitleClick onLogoutActionClick) {
_onLogoutActionClick = onLogoutActionClick; _onSubtitleClick = onLogoutActionClick;
} }
Widget build() { Widget build() {
@@ -55,23 +59,25 @@ class UserInformationWidgetBuilder {
style: const TextStyle(fontSize: 17, color: AppColor.colorNameEmail, fontWeight: FontWeight.w600) style: const TextStyle(fontSize: 17, color: AppColor.colorNameEmail, fontWeight: FontWeight.w600)
) )
), ),
Padding( subtitle != null
padding: const EdgeInsets.only(left: 10), ? Padding(
child: Material( padding: const EdgeInsets.only(left: 10),
borderRadius: BorderRadius.circular(20), child: Material(
color: Colors.transparent, borderRadius: BorderRadius.circular(20),
child: Align( color: Colors.transparent,
child: Align(
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
child: TextButton( child: TextButton(
onPressed: () => _onLogoutActionClick?.call(), onPressed: () => _onSubtitleClick?.call(),
child: Text( child: Text(
AppLocalizations.of(_context).manage_account, AppLocalizations.of(_context).manage_account,
style: const TextStyle(fontSize: 14, color: AppColor.colorTextButton), style: const TextStyle(fontSize: 14, color: AppColor.colorTextButton),
), ),
) )
)
) )
) )
) : const SizedBox.shrink()
])), ])),
if (!kIsWeb) if (!kIsWeb)
Transform( Transform(