Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix #331 cookies parsing #351

Open
wants to merge 188 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 183 commits
Commits
Show all changes
188 commits
Select commit Hold shift + click to select a range
9d2858e
Merge pull request #16 from jonasbark/master
lejard-h Nov 6, 2017
38bf81c
rename analysis_options
lejard-h Dec 7, 2017
70cad71
use yaml extension
lejard-h Dec 7, 2017
1b7a2b1
iOS: add delegate
kpedia Dec 9, 2017
c2cbbca
add hidden in example
kpedia Dec 9, 2017
8e6ad14
add eval Javascript
kpedia Dec 9, 2017
a9f473f
add flag for some scheme
kpedia Dec 9, 2017
71da770
add more document
kpedia Dec 12, 2017
7ea334d
Merge pull request #1 from pedia/schema
pedia Dec 12, 2017
dfd1d0e
fix document
kpedia Dec 15, 2017
571e3aa
Merge pull request #2 from pedia/schema
pedia Dec 15, 2017
55bb7c3
ios: remove event channel
kpedia Dec 16, 2017
72badf1
Merge pull request #3 from pedia/schema
pedia Dec 16, 2017
f990911
fix
kpedia Dec 19, 2017
2dfd131
remove event of stateChanged subscribe in demo
kpedia Dec 19, 2017
3c918cd
ready to release
kpedia Dec 19, 2017
7fdfe9b
Merge pull request #4 from pedia/schema
pedia Dec 19, 2017
f441373
add changelog for new release
kpedia Dec 19, 2017
335fe1d
Merge pull request #20 from pedia/master
lejard-h Dec 20, 2017
fcdbe56
patch Android and update README
lejard-h Dec 20, 2017
0f97a37
get cookies
lejard-h Dec 20, 2017
b41c311
add WebviewScaffold
lejard-h Jan 28, 2018
05fc910
fix import meta warning
lejard-h Jan 28, 2018
ca390a0
fix Android close
lejard-h Jan 28, 2018
b137446
[Android] Back button navigates back now instead of closing webview
Feb 12, 2018
2ce7734
Merge pull request #38 from amuttsch/master
lejard-h Feb 21, 2018
d0df2a9
Update README.md
xqwzts Feb 22, 2018
bc298c0
Merge pull request #40 from xqwzts/patch-1
lejard-h Feb 24, 2018
c49820f
fix for dart2
lejard-h Feb 24, 2018
498e1e4
fix pubspec for publish
lejard-h Feb 24, 2018
5744ffa
support bottomNavigationBar and persistentFooterButtons on webview sc…
lejard-h Feb 25, 2018
3074f31
support zoom
lejard-h Mar 11, 2018
9873b2d
support LocalStorage
jparound30 Mar 25, 2018
6502546
Merge pull request #51 from jparound30/feature_support_localstorage
lejard-h Mar 25, 2018
b63a71d
0.1.4
lejard-h Mar 25, 2018
aa92c11
Using WKWebView instead of UIWebView;
ciceroduarte Mar 30, 2018
a48ed00
Removing validations of withZoom and hidden, BOOL values are 0 by def…
ciceroduarte Mar 31, 2018
0862327
Merge pull request #54 from ciceroduarte/wkwebview
lejard-h Apr 1, 2018
c9033c4
0.1.5
lejard-h Apr 1, 2018
8cb7581
Added reloading (Android)
howardt12345 Apr 8, 2018
503c7f8
Added reloading (Android)
howardt12345 Apr 8, 2018
689f870
Added reloading (Android)
howardt12345 Apr 8, 2018
34f039a
Merge pull request #1 from howardt12345/patch-3
howardt12345 Apr 8, 2018
3fa200e
Merge pull request #2 from howardt12345/patch-2
howardt12345 Apr 8, 2018
5447940
Merge pull request #3 from howardt12345/patch-1
howardt12345 Apr 8, 2018
09598b2
allow locale file
ypelud Apr 11, 2018
f12c7f0
Added navigation (Android)
howardt12345 Apr 11, 2018
172c27c
Update README.md
lejard-h Apr 27, 2018
d07455b
*started with taking safe areas into account
mclark4386 May 11, 2018
ef00a5d
Never set minSdk and targetSdk in manifest.
long1eu May 13, 2018
27ea093
Merge pull request #1 from dart-flitter/master
long1eu May 13, 2018
9be60d3
Update AndroidManifest.xml
long1eu May 13, 2018
e951bc8
Merge pull request #76 from long1eu/master
lejard-h May 18, 2018
2895745
Fixed bad code format
howardt12345 May 20, 2018
a664715
Commented functions with explanations
howardt12345 May 20, 2018
59d130d
Added comments
howardt12345 May 20, 2018
a90f837
Added comments
howardt12345 May 20, 2018
4e46f67
add comment
ypelud May 23, 2018
d65ea52
Merge remote-tracking branch 'upstream/master'
ypelud May 23, 2018
f1c137d
Merge remote-tracking branch 'upstream/master'
ypelud May 23, 2018
a76adf4
Merge pull request #79 from mclark4386/fixes_for_bottom
lejard-h May 24, 2018
8d9793d
Merge pull request #84 from ypelud/master
lejard-h May 24, 2018
4d64a85
Merge pull request #59 from howardt12345/master
lejard-h May 24, 2018
ac6cbbf
bump version
lejard-h May 24, 2018
2460ff0
fix onStateChanged
lejard-h May 24, 2018
e6b1a59
fix pub requirement
lejard-h May 24, 2018
306ed84
Add hide/show on webview for Android & iOS
ghigh May 26, 2018
0d39a44
Fix typo; test on iOS
ghigh May 26, 2018
0def4df
Add reloadUrl function
ghigh May 27, 2018
bafcaaa
Code formatting
ghigh May 27, 2018
517342a
FMT: Java/Swift; also updates gradle plugin to 3.1.2 to address issue…
ghigh Jun 2, 2018
4971c8f
handle type error in getCookies
jngbng Jun 3, 2018
64c464c
Add scrollbar
lakexyde Jun 20, 2018
c115337
add scrollbar
lakexyde Jun 20, 2018
dc5b753
add scrollbar
lakexyde Jun 20, 2018
9834f5d
add scrollbar
lakexyde Jun 20, 2018
2355e39
add scrollbar
lakexyde Jun 20, 2018
47daf0e
Added scrollbar support
lakexyde Jun 20, 2018
4347dc0
added filechooser open in WebviewManager
Jun 22, 2018
4268941
added activityresult listener
Jun 22, 2018
e9b6466
added filechooser method for android 5+
Jun 22, 2018
c5a35fd
Merge pull request #86 from gerryhigh/master
lejard-h Jun 26, 2018
de00f98
Change return type of getCookies() to Map<String, String>
jngbng Jun 26, 2018
fd324d2
adding and removing resultlistener via method call from flutter appli…
Jun 27, 2018
046fe2e
added un/register methods in base.dart
Jun 27, 2018
d86eec1
check for null in activity result handling
Jun 27, 2018
fce8baa
reverted add/remove attempt, check for null in activity result handling
Jun 27, 2018
0d1240c
Merge remote-tracking branch 'origin/master'
Jun 27, 2018
3446647
Merge remote-tracking branch 'upstream/master'
Jun 29, 2018
2a423ed
Add support of HTTP errors.
romkor Jul 2, 2018
10d3377
Merge branch 'master' into add_http_error_stream
romkor Jul 2, 2018
2ffd9d7
Merge pull request #1 from romkor/add_http_error_stream
romkor Jul 3, 2018
25151c3
Update AndroidManifest.xml
romkor Jul 5, 2018
f45273e
added stop loading method and handling on android
Jul 9, 2018
88285fb
added stopLoading call handling on iOS
Jul 9, 2018
3f61e92
Add headers when loading url
readytopark Jul 13, 2018
7454c63
Updated doc
readytopark Jul 13, 2018
7b41eb9
added webview scroll listener
theblackcat102 Jul 14, 2018
68aa49a
fix android direction mistake
theblackcat102 Jul 14, 2018
bf0aec0
Add default minSdkVersion
sroddy Jul 20, 2018
cb79451
prevent negative webview height in scaffold
Jul 22, 2018
e65a45d
Merge pull request #93 from jngbng/master
lejard-h Jul 26, 2018
c361dd0
Merge pull request #105 from peter9teufel/master
lejard-h Jul 26, 2018
995afb3
Merge pull request #135 from va-andrew/master
lejard-h Jul 26, 2018
36987e0
Merge pull request #130 from sroddy/patch-1
lejard-h Jul 26, 2018
016448f
Merge pull request #117 from lakexyde/master
lejard-h Jul 26, 2018
a125f22
Merge pull request #2 from dart-flitter/master
romkor Jul 26, 2018
bf8a20c
Merge branch 'master' into add_http_error_stream
romkor Jul 26, 2018
c2adea1
Rename onError to more explicit onHttpError
romkor Jul 26, 2018
f11c8b0
Merge branch 'master' into master
readytopark Jul 31, 2018
a4c940a
fix: compile & typo
rickytan Aug 1, 2018
d66f16a
Merge pull request #142 from rickytan/master
lejard-h Aug 1, 2018
1847982
Merge pull request #115 from romkor/add_http_error_stream
lejard-h Aug 1, 2018
4b25f8f
Merge pull request #123 from readytopark/master
lejard-h Aug 1, 2018
4958b02
add linter and bump version to 0.2.0
lejard-h Aug 1, 2018
3244f39
Merge remote-tracking branch 'upstream/master' into stop_loading
Aug 1, 2018
d330b41
added position listener in both x and y axis
theblackcat102 Aug 4, 2018
2afe039
fix bug1
theblackcat102 Aug 4, 2018
323a248
Merge branch 'master' of github.com:dart-flitter/flutter_webview_plugin
theblackcat102 Aug 4, 2018
f884912
update readme with latest value
theblackcat102 Aug 4, 2018
00e6dc9
Merge pull request #125 from theblackcat102/master
lejard-h Aug 5, 2018
ee2b353
Merge pull request #143 from peter9teufel/stop_loading
lejard-h Aug 5, 2018
9b0d5bd
0.2.1
lejard-h Aug 5, 2018
c57479f
fix example
lejard-h Aug 5, 2018
404ca21
fix #150
Aug 7, 2018
f4929d6
Merge pull request #151 from KoheiKanagu/master
lejard-h Aug 7, 2018
7038b22
fix #152
lejard-h Aug 8, 2018
b34d6bd
Add hidden and initialChild parameters to WebviewScaffold to allow th…
js1972 Aug 15, 2018
f3a83f3
Update readme with details on additional params on WebviewScaffold
js1972 Aug 15, 2018
6b922b6
Fix spelling in readme
js1972 Aug 15, 2018
3e1d028
Only setup the state change handler if we want the webview to be init…
js1972 Aug 15, 2018
2c536af
Fix rect capture on WebviewScaffold
slightfoot Aug 27, 2018
f0e8e71
Update pubspec.yaml
jeroen-meijer Sep 11, 2018
3177ec6
Update readme to add the withLocalUrl argument
lo-tp Oct 4, 2018
ffe6b33
add back, forward, reload method on iOS
rydein Oct 29, 2018
9f7a694
Updating gradle and Android SDK version
jordansilva Nov 2, 2018
1da7d05
Merge branch 'development'
jordansilva Nov 2, 2018
76bc671
Do not call onReceiveValue on null reference
Nov 5, 2018
aca88cb
Fixed crash issue on Flutter >= 0.10.2
dinhha Nov 14, 2018
d70cb45
Merge pull request #178 from slightfoot/master
slightfoot Nov 14, 2018
a0ddb95
Merge pull request #236 from dinhha/master
charafau Nov 14, 2018
29db1a9
Update build.gradle
slightfoot Nov 14, 2018
d1f6899
Update build.gradle
slightfoot Nov 14, 2018
cbb2397
Update build.gradle
slightfoot Nov 14, 2018
262b079
Merge pull request #223 from jordansilva/master
charafau Nov 14, 2018
2b646bf
Merge pull request #202 from lo-tp/master
slightfoot Nov 14, 2018
08ca8f0
Merge pull request #217 from rydein/master
slightfoot Nov 14, 2018
5b3c3e1
Merge branch 'master' into progress
charafau Nov 14, 2018
dcff178
Merge pull request #160 from js1972/progress
charafau Nov 14, 2018
efc5d95
Update WebviewManager.java
slightfoot Nov 14, 2018
227ca69
Merge pull request #227 from palbert75/master
slightfoot Nov 14, 2018
a9ed99a
[Android] separate openUrl and reloadUrl to keep WebView settings (#187)
hnvn Nov 15, 2018
bf64045
Allow using "file:///" urls in Android. (#122)
devxpy Nov 15, 2018
83f8db0
Update cleanCookies.
slightfoot Nov 15, 2018
83b6c2c
Formatting and cleaning of code.
slightfoot Nov 15, 2018
bd4d485
Minor cleanup to result handling.
slightfoot Nov 15, 2018
a8ffb95
Fixes #77 (Fix crash on didFailNavigation)
charafau Nov 15, 2018
348038e
Minor changes.
slightfoot Nov 15, 2018
d33f2a8
Release v0.3.0
slightfoot Nov 15, 2018
260601b
Release v0.3.0+2
slightfoot Nov 15, 2018
ea58938
fix exception when intent is null
rydein Nov 18, 2018
f613d94
Merge pull request #243 from rydein/feature/fix-null
charafau Nov 19, 2018
c0bdebf
adding minSdkVersion (#241)
jeffmikels Nov 19, 2018
6ec21b7
Pass hidden state when opening WebViewScaffold
Nov 22, 2018
5d5316f
Merge pull request #251 from acedened/patch-1
charafau Nov 26, 2018
cf84502
fix: reloadUrl will not return Future
rydein Nov 27, 2018
239ab6c
Fix height of keyboard
Dec 14, 2018
292f608
Fix Hide/Show WebView
Dec 14, 2018
81f378c
fix: Can't load target="_blank" links on iOS
rydein Dec 17, 2018
cf99d11
hotfix widget back to initialChild after tap action and add minSdkVer…
Feb 6, 2019
13c9ac3
Enable geolocation on Android
lucianoiam Feb 24, 2019
ec7248e
Enable geolocation on Android
lucianoiam Feb 24, 2019
8dcaf29
Add missing import in WebviewManager
lucianoiam Feb 24, 2019
59d155a
Merge pull request #328 from iamluciano/master
charafau Mar 13, 2019
5ab2e36
Merge pull request #276 from rydein/open_target_blank
charafau Mar 13, 2019
e6a5cd5
Merge pull request #256 from rydein/fix/reload-url
charafau Mar 13, 2019
1170af8
Update webview_scaffold.dart
charafau Mar 13, 2019
6be3c0a
Merge pull request #272 from awkaw/patch-2
charafau Mar 13, 2019
284b42f
Merge pull request #273 from awkaw/patch-3
charafau Mar 13, 2019
a119a61
Update build.gradle
charafau Mar 13, 2019
46b3fa5
Merge pull request #317 from blackmenthor/master
charafau Mar 13, 2019
27268d9
fix splitting of cookies
cTatu Mar 13, 2019
1be7158
improving parsing algorithm
Jul 13, 2019
ea4f3d6
Update base.dart
Jul 15, 2019
75b8081
cookies parsing test
Aug 22, 2019
d530927
Revert "cookies parsing test"
Aug 23, 2019
d33b7df
improve parsing escaping internal quotes
Aug 23, 2019
d1c82b6
fix '=' in cookie value
Aug 23, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .analysis_options

This file was deleted.

6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
.DS_Store
.atom/
.idea
.vscode
.packages
.pub/
build/
Expand All @@ -9,3 +10,8 @@ packages
pubspec.lock

example/ios/Podfile.lock
**/Flutter/App.framework/
**/Flutter/Flutter.framework/
**/Flutter/Generated.xcconfig/
**/Flutter/flutter_assets/

80 changes: 80 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,83 @@
# 0.3.0

- Fixes rect capture issue. Ensures WebView remains in the correct place on screen even when keyboard appears.
- Fixed iOS crash issue with Flutter `>= 0.10.2`.
- Added new `clearCookies` feature.
- Added support for `hidden` and `initialChild` feature to show page loading view.
- Added supportMultipleWindows: enables Multiple Window Support on Android.
- Added appCacheEnabled: enables Application Caches API on Android.
- Added allowFileURLs: allows `file://` local file URLs.
- iOS Now supports: `reload`, `goBack`, and `goForward`.
- iOS Bug fix `didFailNavigation` #77
- Updated Android `compileSdkVersion` to `27` matching offical Flutter plugins.
- Fixed Android `reloadUrl` so settings are not cleared.
- Enabled compatible `Mixed Content Mode` on Android.

# 0.2.1

- Added webview scrolling listener
- Added stopLoading() method

# 0.2.0

- update sdk
- prevent negative webview height in scaffold
- handle type error in getCookies
- Support file upload via WebView on Android
- fix WebviewScaffold crash on iOS
- Scrollbar functionality to Web view
- Add support of HTTP errors
- Add headers when loading url

# 0.1.6

- fix onStateChanged
- Taking safe areas into account for bottom bars
- iOS
+ withLocalUrl option for iOS > 9.0
- Android
+ add reload, goBack and foForward function

# 0.1.5

- iOS use WKWebView instead of UIWebView

# 0.1.4

- support localstorage for ANDROID

# 0.1.3

- support zoom in webview

# 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
- support preview dart2

# 0.1.0+1

- fix Android close webview

# 0.1.0

- iOS && Android:
- get cookies
- eval javascript
- user agent setting
- state change event
- embed in rectangle or fullscreen if null
- hidden webview

- Android
- adding Activity in manifest is not needed anymore

- Add `WebviewScaffold`

# 0.0.9

- Android: remove the need to use FlutterActivity as base activity
Expand Down
4 changes: 2 additions & 2 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2017 Your Company. All rights reserved.
// Copyright 2017 Hadrien Lejard. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
Expand All @@ -10,7 +10,7 @@
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Your Company nor the names of its
// * Neither the name of Hadrien Lejard nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
Expand Down
219 changes: 185 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,58 +1,209 @@
# flutter_webview_plugin
<img src="https://img.shields.io/badge/Flutter%20Communityflutter__webview__plugin-blue.svg?style=for-the-badge&logo=data:image/png;base64,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" width="800">

Plugin that allow Flutter to communicate with a native WebView.
[Flutter Community](https://github.com/fluttercommunity/community)

***For Android, it will launch a new Activity inside the App with the Webview inside. Does not allow to integrate a Webview inside a Flutter Widget***
# Flutter WebView Plugin

***For IOS, it will launch a new UIViewController inside the App with the UIWebView inside. Does not allow to integrate a Webview inside a Flutter Widget***
[![pub package](https://img.shields.io/pub/v/flutter_webview_plugin.svg)](https://pub.dartlang.org/packages/flutter_webview_plugin)

- [x] Android
- [x] IOS
Plugin that allows Flutter to communicate with a native WebView.

**_Warning:_**
The webview is not integrated in the widget tree, it is a native view on top of the flutter view.
you won't be able to use snackbars, dialogs ...

## Getting Started

For help getting started with Flutter, view our online [documentation](http://flutter.io/).

### How it works

#### Launch WebView with variable url
#### Launch WebView Fullscreen with Flutter navigation

```dart
new MaterialApp(
routes: {
"/": (_) => new WebviewScaffold(
url: "https://www.google.com",
appBar: new AppBar(
title: new Text("Widget webview"),
),
),
},
);
```

Optional parameters `hidden` and `initialChild` are available so that you can show something else while waiting for the page to load.
If you set `hidden` to true it will show a default CircularProgressIndicator. If you additionally specify a Widget for initialChild
you can have it display whatever you like till page-load.

e.g. The following will show a read screen with the text 'waiting.....'.
```dart
return new MaterialApp(
title: 'Flutter WebView Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
routes: {
'/': (_) => const MyHomePage(title: 'Flutter WebView Demo'),
'/widget': (_) => new WebviewScaffold(
url: selectedUrl,
appBar: new AppBar(
title: const Text('Widget webview'),
),
withZoom: true,
withLocalStorage: true,
hidden: true,
initialChild: Container(
color: Colors.redAccent,
child: const Center(
child: Text('Waiting.....'),
),
),
),
},
);
```

`FlutterWebviewPlugin` provide a singleton instance linked to one unique webview,
so you can take control of the webview from anywhere in the app

listen for events

```dart
final flutterWebviewPlugin = new FlutterWebviewPlugin();

flutterWebviewPlugin.onUrlChanged.listen((String url) {

});
```

#### Listen for scroll event in webview

```dart
final flutterWebviewPlugin = new FlutterWebviewPlugin();
flutterWebviewPlugin.onScrollYChanged.listen((double offsetY) { // latest offset value in vertical scroll
// compare vertical scroll changes here with old value
});

flutterWebviewPlugin.onScrollXChanged.listen((double offsetX) { // latest offset value in horizontal scroll
// compare horizontal scroll changes here with old value
});

````

Note: Do note there is a slight difference is scroll distance between ios and android. Android scroll value difference tends to be larger than ios devices.


#### Hidden WebView

```dart
final flutterWebviewPlugin = new FlutterWebviewPlugin();

flutterWebviewPlugin.launch(url, hidden: true);
```

#### Close launched WebView

```dart
flutterWebviewPlugin.close();
```

#### Webview inside custom Rectangle

```dart
final flutterWebviewPlugin = new FlutterWebviewPlugin();

flutterWebviewPlugin.launch(url,
fullScreen: false,
rect: new Rect.fromLTWH(
0.0,
0.0,
MediaQuery.of(context).size.width,
300.0,
),
);
```

### Webview Events

- `Stream<Null>` onDestroy
- `Stream<String>` onUrlChanged
- `Stream<WebViewStateChanged>` onStateChanged
- `Stream<double>` onScrollXChanged
- `Stream<double>` onScrollYChanged
- `Stream<String>` onError

**_Don't forget to dispose webview_**
`flutterWebviewPlugin.dispose()`

### Webview Functions

```dart
void launchWebView(String url) sync {
var flutterWebviewPlugin = new FlutterWebviewPlugin();

flutterWebviewPlugin.launch(url);

// Wait in this async function until destroy of WebView.
await flutterWebviewPlugin.onDestroy.first;
}
Future<Null> launch(String url, {
Map<String, String> headers: null,
bool withJavascript: true,
bool clearCache: false,
bool clearCookies: false,
bool hidden: false,
bool enableAppScheme: true,
Rect rect: null,
String userAgent: null,
bool withZoom: false,
bool withLocalStorage: true,
bool withLocalUrl: true,
bool scrollBar: true,
bool supportMultipleWindows: false,
bool appCacheEnabled: false,
bool allowFileURLs: false,
});
```

### Close launched WebView
```dart
Future<String> evalJavascript(String code);
```

```dart
void launchWebViewAndCloseAfterWhile(String url) {
var flutterWebviewPlugin = new FlutterWebviewPlugin();

flutterWebviewPlugin.launch(url);

// After 10 seconds.
new Timer(const Duration(seconds: 10), () {
// Close WebView.
// This will also emit the onDestroy event.
flutterWebviewPlugin.close();
});
}
Future<Map<String, dynamic>> getCookies();
```

### Android
```dart
Future<Null> cleanCookies();
```

```dart
Future<Null> resize(Rect rect);
```

Add the Activity to you `AndroidManifest.xml`:
```dart
Future<Null> show();
```

```xml
<activity android:name="com.flutter_webview_plugin.WebviewActivity" android:parentActivityName=".MainActivity"/>
```dart
Future<Null> hide();
```

### iOS
```dart
Future<Null> reloadUrl(String url);
```

```dart
Future<Null> close();
```

```dart
Future<Null> reload();
```

```dart
Future<Null> goBack();
```

```dart
Future<Null> goForward();
```

```dart
Future<Null> stopLoading();
```

No extra configuration is needed.
Loading