Add widgets builder for mailbox

This commit is contained in:
dab246
2021-07-29 12:48:23 +07:00
committed by Dat H. Pham
parent b84270870a
commit 5d3d2f4c1e
10 changed files with 503 additions and 103 deletions
@@ -0,0 +1,75 @@
import 'package:core/core.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
typedef OnBackActionClick = void Function();
class AppBarMessengerWidgetBuilder {
OnBackActionClick? _onBackActionClick;
final BuildContext _context;
final ImagePaths _imagePaths;
final ResponsiveUtils _responsiveUtils;
AppBarMessengerWidgetBuilder(
this._context,
this._imagePaths,
this._responsiveUtils,
);
AppBarMessengerWidgetBuilder onBackActionClick(
OnBackActionClick onBackActionClick) {
_onBackActionClick = onBackActionClick;
return this;
}
Widget build() {
return Container(
key: Key('app_bar_messenger_widget'),
alignment: Alignment.center,
color: Colors.white,
child: MediaQuery(
data: MediaQueryData(padding: EdgeInsets.zero),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.end,
children: [
if (!_responsiveUtils.isDesktop(_context))
Expanded(child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children:[_buildBackButton()])),
_buildListOptionButton(),
]
)
)
);
}
Widget _buildBackButton() {
return ButtonBuilder(_imagePaths.icBack)
.size(20)
.onBackActionClick(() {
if (_onBackActionClick != null) {
_onBackActionClick!();
}})
.build();
}
Widget _buildListOptionButton() {
return Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ButtonBuilder(_imagePaths.icTrash).key(Key('button_delete_message')).build(),
SizedBox(width: 20),
ButtonBuilder(_imagePaths.icEyeDisable).key(Key('button_hide_message')).build(),
SizedBox(width: 20),
ButtonBuilder(_imagePaths.icStar).key(Key('button_favorite_message')).build(),
SizedBox(width: 20),
ButtonBuilder(_imagePaths.icFolder).key(Key('button_add_folder_message')).build(),
]
);
}
}
@@ -0,0 +1,50 @@
import 'package:core/core.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class BottomBarMessengerWidgetBuilder {
final BuildContext _context;
final ImagePaths _imagePaths;
final ResponsiveUtils _responsiveUtils;
BottomBarMessengerWidgetBuilder(
this._context,
this._imagePaths,
this._responsiveUtils,
);
Widget build() {
return Container(
key: Key('bottom_bar_messenger_widget'),
alignment: Alignment.center,
color: Colors.white,
child: MediaQuery(
data: MediaQueryData(padding: EdgeInsets.zero),
child: _buildListOptionButton()
)
);
}
Widget _buildListOptionButton() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ButtonBuilder(_imagePaths.icReplyAll)
.key(Key('button_reply_all_message'))
.text(AppLocalizations.of(_context).reply_all, isVertical: _responsiveUtils.isMobile(_context))
.build(),
ButtonBuilder(_imagePaths.icReply)
.key(Key('button_reply_message'))
.text(AppLocalizations.of(_context).reply, isVertical: _responsiveUtils.isMobile(_context))
.build(),
ButtonBuilder(_imagePaths.icForward)
.key(Key('button_forward_message'))
.text(AppLocalizations.of(_context).forward, isVertical: _responsiveUtils.isMobile(_context))
.build()
]
);
}
}