TF-330 Fix can not scroll email content in browser

This commit is contained in:
dab246
2022-03-17 16:24:40 +07:00
committed by Dat H. Pham
parent b945926b24
commit be6006510e
3 changed files with 94 additions and 65 deletions
+34 -35
View File
@@ -143,30 +143,33 @@ class EmailView extends GetView {
padding: EdgeInsets.only(bottom: 16, left: 16, right: 16, top: 10),
alignment: Alignment.center,
color: Colors.white,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Expanded(child: _buildEmailSubject()),
_buildEmailTime(context),
]),
_buildDivider(edgeInsets: EdgeInsets.only(top: 16)),
Obx(() => emailController.currentEmail != null
? _buildEmailAddress(
context,
emailController.currentEmail!,
emailController.emailAddressExpandMode.value,
emailController.isDisplayFullEmailAddress.value)
: SizedBox.shrink()),
_buildDivider(edgeInsets: EdgeInsets.only(top: 4)),
_buildAttachments(context),
_buildListEmailContent(),
],
)
child: LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Expanded(child: _buildEmailSubject()),
_buildEmailTime(context),
]),
_buildDivider(edgeInsets: EdgeInsets.only(top: 16)),
Obx(() => emailController.currentEmail != null
? _buildEmailAddress(
context,
emailController.currentEmail!,
emailController.emailAddressExpandMode.value,
emailController.isDisplayFullEmailAddress.value)
: SizedBox.shrink()),
_buildDivider(edgeInsets: EdgeInsets.only(top: 4)),
_buildAttachments(context),
_buildListEmailContent(context, constraints),
],
);
})
);
}
@@ -445,7 +448,7 @@ class EmailView extends GetView {
);
}
Widget _buildListEmailContent() {
Widget _buildListEmailContent(BuildContext context, BoxConstraints constraints) {
return Obx(() => emailController.viewState.value.fold(
(failure) => SizedBox.shrink(),
(success) {
@@ -453,18 +456,14 @@ class EmailView extends GetView {
return EmailContentPlaceHolderLoading(responsiveUtils: responsiveUtils);
} else {
if (emailController.emailContents.isNotEmpty) {
return ListView.builder(
primary: false,
shrinkWrap: true,
padding: EdgeInsets.only(top: 10),
key: Key('list_email_content'),
itemCount: emailController.emailContents.length,
itemBuilder: (context, index) =>
EmailContentItemBuilder(
return Column(children: [
...emailController.emailContents.map((content) => EmailContentItemBuilder(
context,
emailController.emailContents[index],
content,
constraints,
loadingWidget: EmailContentPlaceHolderLoading(responsiveUtils: responsiveUtils)
).build());
).build()).toList(),
]);
} else {
return SizedBox.shrink();
}
@@ -9,10 +9,12 @@ class EmailContentItemBuilder {
final BuildContext _context;
final EmailContent _emailContent;
final Widget? loadingWidget;
final BoxConstraints _constraints;
EmailContentItemBuilder(
this._context,
this._emailContent,
this._constraints,
{
this.loadingWidget
}
@@ -31,13 +33,19 @@ class EmailContentItemBuilder {
}
Widget _buildItem() {
log('EmailContentItemBuilder() | maxWidth: ${_constraints.maxWidth}');
log('EmailContentItemBuilder() | heightScreen: ${MediaQuery.of(_context).size.height}');
switch(_emailContent.type) {
case EmailContentType.textHtml:
if (kIsWeb) {
return HtmlContentViewerOnWeb(
widthContent: MediaQuery.of(_context).size.width,
contentHtml: _emailContent.content,
controller: HtmlViewerControllerForWeb());
return SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: HtmlContentViewerOnWeb(
widthContent: _constraints.maxWidth,
heightContent: MediaQuery.of(_context).size.height,
contentHtml: _emailContent.content,
controller: HtmlViewerControllerForWeb()),
);
} else {
return HtmlContentViewer(
widthContent: MediaQuery.of(_context).size.width,