diff --git a/README.md b/README.md
index 0cc73dd7..bccca4fc 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,6 @@
# flutter_webview_plugin
-
-Plugin that allow Flutter to communicate with a native Webview.
-
+Plugin that allow Flutter to communicate with a native WebView.
***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***
@@ -11,31 +9,50 @@ Plugin that allow Flutter to communicate with a native Webview.
- [x] Android
- [x] IOS
-
## Getting Started
-For help getting started with Flutter, view our online
-[documentation](http://flutter.io/).
+For help getting started with Flutter, view our online [documentation](http://flutter.io/).
+### How it works
-### Dart
+#### Launch WebView with variable url
```dart
-var flutterWebviewPlugin = new FlutterWebviewPlugin();
+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;
+}
+```
+
+### Close launched WebView
-flutterWebviewPlugin.launch("https://flutter.io");
-await flutterWebviewPlugin.onDestroy.first;
+```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();
+ });
+}
```
### Android
-Add the Activity to you `AndroidManifest.xml`
+Add the Activity to you `AndroidManifest.xml`:
```xml
-
+
```
-### IOS
+### iOS
-No extra configuration is needed
+No extra configuration is needed.
diff --git a/example/lib/main.dart b/example/lib/main.dart
index b7085a83..abf500d1 100644
--- a/example/lib/main.dart
+++ b/example/lib/main.dart
@@ -1,5 +1,7 @@
import 'dart:async';
+
import 'package:flutter/material.dart';
+
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
void main() {
@@ -7,24 +9,14 @@ void main() {
}
class MyApp extends StatelessWidget {
- // This widget is the root of your application.
@override
Widget build(BuildContext context) {
return new MaterialApp(
- title: 'Flutter Demo',
+ title: 'Flutter WebView Demo',
theme: new ThemeData(
- // This is the theme of your application.
- //
- // Try running your application with "flutter run". You'll see
- // the application has a blue toolbar. Then, without quitting
- // the app, try changing the primarySwatch below to Colors.green
- // and then invoke "hot reload" (press "r" in the console where
- // you ran "flutter run", or press Run > Hot Reload App in IntelliJ).
- // Notice that the counter didn't reset back to zero -- the application
- // is not restarted.
primarySwatch: Colors.blue,
),
- home: new MyHomePage(title: 'Flutter Demo Home Page'),
+ home: new MyHomePage(title: 'Flutter WebView Demo'),
);
}
}
@@ -32,15 +24,6 @@ class MyApp extends StatelessWidget {
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
- // This widget is the home page of your application. It is stateful,
- // meaning that it has a State object (defined below) that contains
- // fields that affect how it looks.
-
- // This class is the configuration for the state. It holds the
- // values (in this case the title) provided by the parent (in this
- // case the App widget) and used by the build method of the State.
- // Fields in a Widget subclass are always marked "final".
-
final String title;
@override
@@ -48,28 +31,34 @@ class MyHomePage extends StatefulWidget {
}
class _MyHomePageState extends State {
+ // Instance of WebView plugin
final FlutterWebviewPlugin flutterWebviewPlugin = new FlutterWebviewPlugin();
- TextEditingController _ctrl =
- new TextEditingController(text: "https://flutter.io");
+ // On destroy stream
StreamSubscription _onDestroy;
+
+ TextEditingController _ctrl = new TextEditingController(text: "https://flutter.io");
GlobalKey _scaffoldKey = new GlobalKey();
@override
initState() {
super.initState();
+
+ // Add a listener to on destroy WebView, so you can make came actions.
_onDestroy = flutterWebviewPlugin.onDestroy.listen((_) {
if (mounted) {
- _scaffoldKey.currentState
- .showSnackBar(new SnackBar(content: new Text("Webview Destroyed")));
+ // Actions like show a info toast.
+ _scaffoldKey.currentState.showSnackBar(new SnackBar(content: new Text("Webview Destroyed")));
}
});
}
@override
void dispose() {
- super.dispose();
+ // Every listener should be canceled, the same should be done with this stream.
_onDestroy?.cancel();
+
+ super.dispose();
}
@override
@@ -79,22 +68,26 @@ class _MyHomePageState extends State {
appBar: new AppBar(
title: new Text('Plugin example app'),
),
- body: new Column(children: [
- new Container(
+ body: new Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ new Container(
padding: const EdgeInsets.all(24.0),
- child: new TextField(controller: _ctrl)),
- new RaisedButton(onPressed: _onPressed, child: new Text("Open Webview"))
- ], mainAxisAlignment: MainAxisAlignment.center),
+ child: new TextField(controller: _ctrl),
+ ),
+ new RaisedButton(
+ onPressed: _onPressed,
+ child: new Text("Open Webview"),
+ )
+ ],
+ ),
);
}
void _onPressed() {
try {
+ // This way you launch WebView with an url as a parameter.
flutterWebviewPlugin.launch(_ctrl.text);
-
- new Timer(const Duration(seconds: 10), () {
- flutterWebviewPlugin.close();
- });
} catch (e) {
print(e);
}
diff --git a/example/pubspec.yaml b/example/pubspec.yaml
index 1d2058ed..a074a4b7 100644
--- a/example/pubspec.yaml
+++ b/example/pubspec.yaml
@@ -7,47 +7,5 @@ dependencies:
flutter_webview_plugin:
path: ../
-# For information on the generic Dart part of this file, see the
-# following page: https://www.dartlang.org/tools/pub/pubspec
-
-# The following section is specific to Flutter.
flutter:
-
- # The following line ensures that the Material Icons font is
- # included with your application, so that you can use the icons in
- # the Icons class.
uses-material-design: true
-
- # To add assets to your application, add an assets section here, in
- # this "flutter" section, as in:
- # assets:
- # - images/a_dot_burr.jpeg
- # - images/a_dot_ham.jpeg
-
- # To add assets from package dependencies, first ensure the asset
- # is in the lib/ directory of the dependency. Then,
- # refer to the asset with a path prefixed with
- # `packages/PACKAGE_NAME/`. Note: the `lib/` is implied, do not
- # include `lib/` in the asset path.
- #
- # Here is an example:
- #
- # assets:
- # - packages/PACKAGE_NAME/path/to/asset
-
- # To add custom fonts to your application, add a fonts section here,
- # in this "flutter" section. Each entry in this list should have a
- # "family" key with the font family name, and a "fonts" key with a
- # list giving the asset and other descriptors for the font. For
- # example:
- # fonts:
- # - family: Schyler
- # fonts:
- # - asset: fonts/Schyler-Regular.ttf
- # - asset: fonts/Schyler-Italic.ttf
- # style: italic
- # - family: Trajan Pro
- # fonts:
- # - asset: fonts/TrajanPro.ttf
- # - asset: fonts/TrajanPro_Bold.ttf
- # weight: 700