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