Browse Source

Add comments, add previews to README

Honza Bittner 8 years ago
parent
commit
0d1898af4a
3 changed files with 60 additions and 92 deletions
  1. 32 15
      README.md
  2. 28 35
      example/lib/main.dart
  3. 0 42
      example/pubspec.yaml

+ 32 - 15
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
-<activity android:name="com.flutter_webview_plugin.WebviewActivity"
-                  android:parentActivityName=".MainActivity"/>
+<activity android:name="com.flutter_webview_plugin.WebviewActivity" android:parentActivityName=".MainActivity"/>
 ```
 
-### IOS
+### iOS
 
-No extra configuration is needed
+No extra configuration is needed.

+ 28 - 35
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<MyHomePage> {
+  // 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<ScaffoldState> _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<MyHomePage> {
       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);
     }

+ 0 - 42
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