@@ -21,6 +21,8 @@ class WebviewScaffold extends StatefulWidget {
2121 final bool withLocalStorage;
2222 final bool withLocalUrl;
2323 final bool scrollBar;
24+ final bool hidden;
25+ final Widget initialChild;
2426
2527 final Map <String , String > headers;
2628
@@ -40,7 +42,9 @@ class WebviewScaffold extends StatefulWidget {
4042 this .withZoom,
4143 this .withLocalStorage,
4244 this .withLocalUrl,
43- this .scrollBar})
45+ this .scrollBar,
46+ this .hidden = false ,
47+ this .initialChild})
4448 : super (key: key);
4549
4650 @override
@@ -51,18 +55,30 @@ class _WebviewScaffoldState extends State<WebviewScaffold> {
5155 final webviewReference = new FlutterWebviewPlugin ();
5256 Rect _rect;
5357 Timer _resizeTimer;
58+ StreamSubscription <WebViewStateChanged > _onStateChanged;
5459
5560 @override
5661 void initState () {
5762 super .initState ();
5863 webviewReference.close ();
64+
65+ if (widget.hidden) {
66+ _onStateChanged = webviewReference.onStateChanged.listen ((WebViewStateChanged state) {
67+ if (state.type == WebViewState .finishLoad) {
68+ webviewReference.show ();
69+ }
70+ });
71+ }
5972 }
6073
6174 @override
6275 void dispose () {
6376 super .dispose ();
6477 _resizeTimer? .cancel ();
6578 webviewReference.close ();
79+ if (widget.hidden) {
80+ _onStateChanged.cancel ();
81+ }
6682 webviewReference.dispose ();
6783 }
6884
@@ -101,9 +117,7 @@ class _WebviewScaffoldState extends State<WebviewScaffold> {
101117 }
102118 }
103119 },
104- child: const Center (
105- child: CircularProgressIndicator (),
106- ),
120+ child: widget.initialChild ?? const Center (child: const CircularProgressIndicator ()),
107121 ),
108122 );
109123 }
@@ -115,7 +129,7 @@ class _WebviewPlaceholder extends SingleChildRenderObjectWidget {
115129 @required this .onRectChanged,
116130 Widget child,
117131 }) : super (key: key, child: child);
118-
132+
119133 final ValueChanged <Rect > onRectChanged;
120134
121135 @override
@@ -124,7 +138,7 @@ class _WebviewPlaceholder extends SingleChildRenderObjectWidget {
124138 onRectChanged: onRectChanged,
125139 );
126140 }
127-
141+
128142 @override
129143 void updateRenderObject (BuildContext context, _WebviewPlaceholderRender renderObject) {
130144 renderObject..onRectChanged = onRectChanged;
0 commit comments