TF-255 Create EasyWebView for display content email
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:easy_web_view/easy_web_view.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -10,6 +11,7 @@ class HtmlContentViewer extends StatefulWidget {
|
||||
final String contentHtml;
|
||||
final int minHeight;
|
||||
final double widthContent;
|
||||
final double? heightContent;
|
||||
final Widget? loadingWidget;
|
||||
|
||||
/// Register this callback if you want a reference to the [InAppWebViewController].
|
||||
@@ -26,6 +28,7 @@ class HtmlContentViewer extends StatefulWidget {
|
||||
Key? key,
|
||||
required this.contentHtml,
|
||||
required this.widthContent,
|
||||
this.heightContent,
|
||||
this.minHeight = 100,
|
||||
this.loadingWidget,
|
||||
this.onCreated,
|
||||
@@ -99,18 +102,22 @@ class _HtmlContentViewState extends State<HtmlContentViewer> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
_documentWidth = widget.widthContent;
|
||||
return Stack(
|
||||
alignment: AlignmentDirectional.center,
|
||||
children: [
|
||||
SizedBox(
|
||||
height: _documentHeight,
|
||||
width: _documentWidth,
|
||||
child: _buildWebView(),
|
||||
),
|
||||
if (loading) _buildLoadingView()
|
||||
],
|
||||
);
|
||||
if (kIsWeb) {
|
||||
return _buildWebViewOnBrowser();
|
||||
} else {
|
||||
_documentWidth = widget.widthContent;
|
||||
return Stack(
|
||||
alignment: AlignmentDirectional.center,
|
||||
children: [
|
||||
SizedBox(
|
||||
height: _documentHeight,
|
||||
width: _documentWidth,
|
||||
child: _buildWebView(),
|
||||
),
|
||||
if (loading) _buildLoadingView()
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Widget _buildLoadingView() {
|
||||
@@ -126,6 +133,20 @@ class _HtmlContentViewState extends State<HtmlContentViewer> {
|
||||
}
|
||||
}
|
||||
|
||||
Widget _buildWebViewOnBrowser() {
|
||||
if (_initialPageContent == null || _initialPageContent?.isEmpty == true) {
|
||||
return Container();
|
||||
}
|
||||
return EasyWebView(
|
||||
key: ValueKey('WebViewOnBrowser'),
|
||||
src: _initialPageContent!,
|
||||
onLoaded: () => {},
|
||||
isHtml: true,
|
||||
webNavigationDelegate: (_) => WebNavigationDecision.prevent,
|
||||
height: widget.heightContent,
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildWebView() {
|
||||
if (_initialPageContent == null || _initialPageContent?.isEmpty == true) {
|
||||
return Container();
|
||||
|
||||
@@ -34,6 +34,7 @@ class EmailContentItemBuilder {
|
||||
case EmailContentType.textHtml:
|
||||
return HtmlContentViewer(
|
||||
widthContent: MediaQuery.of(_context).size.width,
|
||||
heightContent: MediaQuery.of(_context).size.height,
|
||||
contentHtml: _emailContent.content,
|
||||
loadingWidget: loadingWidget,
|
||||
mailtoDelegate: (uri) async {});
|
||||
|
||||
Reference in New Issue
Block a user