|
|
@@ -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);
|
|
|
}
|