Jelajahi Sumber

support bottomNavigationBar and persistentFooterButtons on webview scaffold

Lejard Hadrien 7 tahun lalu
induk
melakukan
8dd0584e93
3 mengubah file dengan 31 tambahan dan 11 penghapusan
  1. 4 0
      CHANGELOG.md
  2. 26 10
      lib/src/webview_scaffold.dart
  3. 1 1
      pubspec.yaml

+ 4 - 0
CHANGELOG.md

@@ -1,3 +1,7 @@
+# 0.1.2
+
+- support bottomNavigationBar and persistentFooterButtons on webview scaffold
+
 # 0.1.1
 - support back button navigation for Android
     + if cannot go back, it will trigger onDestroy

+ 26 - 10
lib/src/webview_scaffold.dart

@@ -8,12 +8,14 @@ import 'base.dart';
 class WebviewScaffold extends StatefulWidget {
   final PreferredSizeWidget appBar;
   final String url;
-  final withJavascript;
-  final clearCache;
-  final clearCookies;
-  final enableAppScheme;
-  final userAgent;
-  final primary;
+  final bool withJavascript;
+  final bool clearCache;
+  final bool clearCookies;
+  final bool enableAppScheme;
+  final String userAgent;
+  final bool primary;
+  final List<Widget> persistentFooterButtons;
+  final Widget bottomNavigationBar;
 
   WebviewScaffold(
       {Key key,
@@ -24,7 +26,9 @@ class WebviewScaffold extends StatefulWidget {
       this.clearCookies,
       this.enableAppScheme,
       this.userAgent,
-      this.primary: true})
+      this.primary: true,
+      this.persistentFooterButtons,
+      this.bottomNavigationBar})
       : super(key: key);
 
   @override
@@ -71,6 +75,8 @@ class _WebviewScaffoldState extends State<WebviewScaffold> {
     }
     return new Scaffold(
         appBar: widget.appBar,
+        persistentFooterButtons: widget.persistentFooterButtons,
+        bottomNavigationBar: widget.bottomNavigationBar,
         body: new Center(child: new CircularProgressIndicator()));
   }
 
@@ -79,9 +85,19 @@ class _WebviewScaffoldState extends State<WebviewScaffold> {
 
     final mediaQuery = MediaQuery.of(context);
     final topPadding = widget.primary ? mediaQuery.padding.top : 0.0;
-    final appBarHeight =
+    num top =
         fullscreen ? 0.0 : widget.appBar.preferredSize.height + topPadding;
-    return new Rect.fromLTWH(0.0, appBarHeight, mediaQuery.size.width,
-        mediaQuery.size.height - appBarHeight);
+
+    num height = mediaQuery.size.height - top;
+
+    if (widget.bottomNavigationBar != null) {
+      height -= 56.0; // todo(lejard_h) find a way to determine bottomNavigationBar programmatically
+    }
+
+    if (widget.persistentFooterButtons != null) {
+      height -= 53.0; // todo(lejard_h) find a way to determine persistentFooterButtons programmatically
+    }
+
+    return new Rect.fromLTWH(0.0, top, mediaQuery.size.width, height);
   }
 }

+ 1 - 1
pubspec.yaml

@@ -5,7 +5,7 @@ authors:
 - Toufik Zitouni <toufiksapps@gmail.com>
 - Pedia <kpedia@163.com>
 homepage: https://github.com/dart-flitter/flutter_webview_plugin
-version: 0.1.1
+version: 0.1.2
 
 environment:
   sdk: ">=1.8.0 <2.0.0"