Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
Flutter Inappwebview
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李增强
Flutter Inappwebview
Commits
c34cdf55
Commit
c34cdf55
authored
Dec 20, 2018
by
pichillilorenzo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added test.dart
parent
3b538104
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
524 additions
and
54 deletions
+524
-54
.idea/workspace.xml
.idea/workspace.xml
+25
-32
example/lib/main.dart
example/lib/main.dart
+24
-22
example/lib/test.dart
example/lib/test.dart
+475
-0
No files found.
.idea/workspace.xml
View file @
c34cdf55
...
...
@@ -16,12 +16,7 @@
<component
name=
"ChangeListManager"
>
<list
default=
"true"
id=
"9b41f7a2-a71e-4923-91fb-249d7815b3e7"
name=
"Default"
comment=
""
>
<change
beforePath=
"$PROJECT_DIR$/.idea/workspace.xml"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/.idea/workspace.xml"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/example/ios/Runner/Info.plist"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/example/ios/Runner/Info.plist"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/flutter_inappbrowser.iml"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/flutter_inappbrowser.iml"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/ios/Classes/FlutterWebViewController.swift"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/ios/Classes/FlutterWebViewController.swift"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/ios/Classes/InAppBrowserWebViewController.swift"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/ios/Classes/InAppBrowserWebViewController.swift"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/ios/Classes/InAppWebView.swift"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/ios/Classes/InAppWebView.swift"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/ios/Classes/SwiftFlutterPlugin.swift"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/ios/Classes/SwiftFlutterPlugin.swift"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/example/lib/main.dart"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/example/lib/main.dart"
afterDir=
"false"
/>
</list>
<ignored
path=
"$PROJECT_DIR$/.dart_tool/"
/>
<ignored
path=
"$PROJECT_DIR$/.idea/"
/>
...
...
@@ -41,7 +36,7 @@
<file
leaf-file-name=
"flutter_inappbrowser.dart"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/lib/flutter_inappbrowser.dart"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
25
0"
>
<state
relative-caret-position=
"
438
0"
>
<caret
line=
"323"
column=
"41"
selection-start-line=
"323"
selection-start-column=
"41"
selection-end-line=
"323"
selection-end-column=
"41"
/>
<folding>
<element
signature=
"e#814#831#0"
expanded=
"true"
/>
...
...
@@ -53,11 +48,10 @@
<file
leaf-file-name=
"main.dart"
pinned=
"false"
current-in-tab=
"true"
>
<entry
file=
"file://$PROJECT_DIR$/example/lib/main.dart"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
288
"
>
<caret
line=
"
410"
column=
"35"
lean-forward=
"true"
selection-start-line=
"410"
selection-start-column=
"35"
selection-end-line=
"410"
selection-end-column=
"35
"
/>
<state
relative-caret-position=
"
405
"
>
<caret
line=
"
27"
column=
"18"
lean-forward=
"true"
selection-start-line=
"27"
selection-start-column=
"18"
selection-end-line=
"27"
selection-end-column=
"18
"
/>
<folding>
<element
signature=
"e#0#16428#0"
expanded=
"true"
/>
<element
signature=
"e#12489#12509#0"
expanded=
"true"
/>
<element
signature=
"e#0#20#0"
expanded=
"true"
/>
</folding>
</state>
</provider>
...
...
@@ -154,7 +148,7 @@
</list>
</option>
</component>
<component
name=
"ProjectFrameBounds"
>
<component
name=
"ProjectFrameBounds"
extendedState=
"6"
>
<option
name=
"y"
value=
"23"
/>
<option
name=
"width"
value=
"1641"
/>
<option
name=
"height"
value=
"1027"
/>
...
...
@@ -166,6 +160,17 @@
</navigator>
<panes>
<pane
id=
"AndroidView"
/>
<pane
id=
"Scope"
>
<subPane
subId=
"Project Files"
>
<expand>
<path>
<item
name=
"Root"
type=
"cbb8eebc:String"
user=
"Root"
/>
<item
name=
"flutter_inappbrowser"
type=
"cbb8eebc:String"
user=
"flutter_inappbrowser"
/>
</path>
</expand>
<select
/>
</subPane>
</pane>
<pane
id=
"ProjectPane"
>
<subPane>
<expand>
...
...
@@ -207,17 +212,6 @@
<option
name=
"show-excluded-files"
value=
"false"
/>
</pane>
<pane
id=
"PackagesPane"
/>
<pane
id=
"Scope"
>
<subPane
subId=
"Project Files"
>
<expand>
<path>
<item
name=
"Root"
type=
"cbb8eebc:String"
user=
"Root"
/>
<item
name=
"flutter_inappbrowser"
type=
"cbb8eebc:String"
user=
"flutter_inappbrowser"
/>
</path>
</expand>
<select
/>
</subPane>
</pane>
</panes>
</component>
<component
name=
"PropertiesComponent"
>
...
...
@@ -374,7 +368,7 @@
<servers
/>
</component>
<component
name=
"ToolWindowManager"
>
<frame
x=
"0"
y=
"23"
width=
"16
41"
height=
"1027"
extended-state=
"0
"
/>
<frame
x=
"0"
y=
"23"
width=
"16
80"
height=
"1027"
extended-state=
"6
"
/>
<editor
active=
"true"
/>
<layout>
<window_info
anchor=
"bottom"
id=
"Android Profiler"
order=
"7"
show_stripe_button=
"false"
/>
...
...
@@ -387,14 +381,14 @@
<window_info
anchor=
"bottom"
id=
"Dart Analysis"
order=
"14"
weight=
"0.32745314"
/>
<window_info
anchor=
"bottom"
id=
"Run"
order=
"2"
sideWeight=
"0.49478307"
weight=
"0.29437706"
/>
<window_info
anchor=
"bottom"
id=
"Version Control"
order=
"9"
/>
<window_info
a
nchor=
"bottom"
id=
"Terminal"
order=
"10"
sideWeight=
"0.49533224
"
weight=
"0.24696803"
/>
<window_info
a
ctive=
"true"
anchor=
"bottom"
id=
"Terminal"
order=
"10"
sideWeight=
"0.49533224"
visible=
"true
"
weight=
"0.24696803"
/>
<window_info
anchor=
"right"
id=
"Flutter Outline"
order=
"6"
weight=
"0.32922077"
/>
<window_info
anchor=
"bottom"
id=
"Logcat"
order=
"11"
/>
<window_info
id=
"Captures"
order=
"4"
weight=
"0.32936507"
/>
<window_info
id=
"Capture Tool"
order=
"6"
/>
<window_info
id=
"Designer"
order=
"2"
/>
<window_info
active=
"true"
content_ui=
"combo"
id=
"Project"
order=
"0"
sideWeight=
"0.4950386"
visible=
"true"
weight=
"0.13445903
"
/>
<window_info
id=
"Structure"
order=
"1"
sideWeight=
"0.50
496143"
side_tool=
"true"
visible=
"true"
weight=
"0.13445903
"
/>
<window_info
content_ui=
"combo"
id=
"Project"
order=
"0"
sideWeight=
"0.49341142"
visible=
"true"
weight=
"0.13125764
"
/>
<window_info
id=
"Structure"
order=
"1"
sideWeight=
"0.50
65886"
side_tool=
"true"
visible=
"true"
weight=
"0.13125764
"
/>
<window_info
anchor=
"right"
id=
"Device File Explorer"
order=
"5"
side_tool=
"true"
/>
<window_info
anchor=
"right"
id=
"Theme Preview"
order=
"7"
/>
<window_info
anchor=
"bottom"
id=
"Debug"
order=
"3"
weight=
"0.34288865"
/>
...
...
@@ -679,7 +673,7 @@
</entry>
<entry
file=
"file://$PROJECT_DIR$/lib/flutter_inappbrowser.dart"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
25
0"
>
<state
relative-caret-position=
"
438
0"
>
<caret
line=
"323"
column=
"41"
selection-start-line=
"323"
selection-start-column=
"41"
selection-end-line=
"323"
selection-end-column=
"41"
/>
<folding>
<element
signature=
"e#814#831#0"
expanded=
"true"
/>
...
...
@@ -689,11 +683,10 @@
</entry>
<entry
file=
"file://$PROJECT_DIR$/example/lib/main.dart"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
288
"
>
<caret
line=
"
410"
column=
"35"
lean-forward=
"true"
selection-start-line=
"410"
selection-start-column=
"35"
selection-end-line=
"410"
selection-end-column=
"35
"
/>
<state
relative-caret-position=
"
405
"
>
<caret
line=
"
27"
column=
"18"
lean-forward=
"true"
selection-start-line=
"27"
selection-start-column=
"18"
selection-end-line=
"27"
selection-end-column=
"18
"
/>
<folding>
<element
signature=
"e#0#16428#0"
expanded=
"true"
/>
<element
signature=
"e#12489#12509#0"
expanded=
"true"
/>
<element
signature=
"e#0#20#0"
expanded=
"true"
/>
</folding>
</state>
</provider>
...
...
example/lib/main.dart
View file @
c34cdf55
...
...
@@ -33,29 +33,31 @@ class _MyAppState extends State<MyApp> {
Widget
build
(
BuildContext
context
)
{
return
MaterialApp
(
home:
DefaultTabController
(
length:
3
,
child:
Scaffold
(
appBar:
AppBar
(
title:
Text
(
'Tabs Demo'
),
),
body:
TabBarView
(
children:
[
WebviewExampleScreen
(),
ChromeSafariExampleScreen
(),
InlineExampleScreen
(),
],
),
bottomNavigationBar:
Container
(
color:
Theme
.
of
(
context
).
primaryColor
,
child:
TabBar
(
indicatorColor:
Colors
.
white
,
tabs:
[
Tab
(
text:
"Webview"
),
Tab
(
text:
"Chrome/Safari"
),
Tab
(
text:
"Inline"
,),
]
,
length:
3
,
child:
Scaffold
(
appBar:
AppBar
(
title:
Text
(
'Tabs Demo'
),
),
body:
TabBarView
(
children:
[
WebviewExampleScreen
(),
ChromeSafariExampleScreen
(),
InlineExampleScreen
(),
],
),
bottomNavigationBar:
Container
(
color:
Theme
.
of
(
context
).
primaryColor
,
child:
TabBar
(
indicatorColor:
Colors
.
white
,
tabs:
[
Tab
(
text:
"Webview"
),
Tab
(
text:
"Chrome/Safari"
),
Tab
(
text:
"Inline"
,
),
))),
],
),
))),
);
}
}
example/lib/test.dart
0 → 100644
View file @
c34cdf55
//import 'dart:async';
//import 'dart:convert';
//import 'package:flutter/material.dart';
//import 'package:flutter_inappbrowser/flutter_inappbrowser.dart';
//
//class MyInAppBrowser extends InAppBrowser {
// @override
// Future onBrowserCreated() async {
// print("\n\nBrowser Ready!\n\n");
// }
//
// @override
// Future onLoadStart(String url) async {
// print("\n\nStarted $url\n\n");
//// print("\n\n ${await this.isHidden()} \n\n");
//// print(await this.webViewController.canGoBack());
//// print(await this.webViewController.canGoForward());
// }
//
// @override
// Future onLoadStop(String url) async {
// print("\n\nStopped $url\n\n");
//
//// print(base64.encode(await this.webViewController.getFavicon()));
//// WebHistory history = await this.webViewController.getCopyBackForwardList();
//// print(history.list.length);
//// print(history.currentIndex);
//// print(history.list[history.currentIndex].url);
//// for(WebHistoryItem item in history.list) {
//// print(item.title);
//// }
//
////
//// print(await this.webViewController.canGoBackOrForward(1));
//// if (await this.webViewController.canGoBackOrForward(-2)) {
//// this.webViewController.goTo(history.list[0]);
//// }
//
//// await this.webViewController.goBackOrForward(-1);
//
//// print(await this.webViewController.canGoBack());
//// print(await this.webViewController.canGoForward());
//
//// var screenshot = await this.webViewController.takeScreenshot();
//// await this.webViewController.injectScriptCode("""
//// document.body.innerHTML = '<img style="max-width: 100%; width: 100%" src="data:image/png;base64,${base64.encode(screenshot)}" />';
//// """);
//
//// var options = await this.getOptions();
//// if (options["javaScriptEnabled"]) {
//// await this.setOptions({
//// //"progressBar": true,
//// //"useOnLoadResource": true,
//// //"hidden": true,
//// //"toolbarTopFixedTitle": "Fixed title A",
//// //"useShouldOverrideUrlLoading": true
//// //"hideUrlBar": true,
//// "javaScriptEnabled": false,
//// "toolbarTop": true,
//// "toolbarBottom": false
//// });
//// }
//// else {
//// await this.setOptions({
//// //"progressBar": false,
//// //"useOnLoadResource": false,
//// //"hidden": true,
//// //"toolbarTopFixedTitle": "Fixed title B",
//// //"useShouldOverrideUrlLoading": true
//// //"hideUrlBar": false,
//// "javaScriptEnabled": true,
//// "toolbarTop": false,
//// "toolbarBottom": true
//// });
//// }
//
//// print("\n\n ${await this.isHidden()} \n\n");
////
//// await this.webViewController.injectScriptCode("window.flutter_inappbrowser.callHandler('handlerTest', 1, 5,'string', {'key': 5}, [4,6,8]);");
//// await this.webViewController.injectScriptCode("window.flutter_inappbrowser.callHandler('handlerTest2', false, null, undefined);");
//// await this.webViewController.injectScriptCode("setTimeout(function(){window.flutter_inappbrowser.callHandler('handlerTest', 'anotherString');}, 1000);");
//
//// await this.webViewController.injectScriptCode("console.log({'testObject': 5});");
//// await this.webViewController.injectScriptCode("console.warn('testWarn',null);");
//// await this.webViewController.injectScriptCode("console.log('testObjectStringify', JSON.stringify({'asd': 5}));");
//// await this.webViewController.injectScriptCode("console.info('testInfo', 6);");
//// await this.webViewController.injectScriptCode("console.error('testError', false);");
//// await this.webViewController.injectScriptCode("console.debug('testDebug', true);");
////
//// print(await this.webViewController.injectScriptCode("document.cookie"));
////
//// print("");
//// print(await CookieManager.getCookies(url));
//// print("");
//// print(await CookieManager.getCookie(url, "my_cookie2"));
//// print("");
//// await CookieManager.deleteCookie(url, "my_cookie2");
//// await CookieManager.deleteCookie(url, "_gid", domain: ".googleblog.com");
//// print("");
//// print(await CookieManager.getCookies(url));
//// print("");
//// await CookieManager.deleteCookies(url);
//// print("");
//// print(await CookieManager.getCookies(url));
//// print("");
//// await CookieManager.deleteAllCookies();
//// print("");
//// print(await CookieManager.getCookies(url));
//// print("");
////
//// print(await this.webViewController.injectScriptCode("null"));
//// print(await this.webViewController.injectScriptCode("undefined"));
//// print(await this.webViewController.injectScriptCode("3"));
//// print(await this.webViewController.injectScriptCode("""
//// function asd (a,b) {
//// return a+b;
//// };
//// asd(3,5);
//// """));
//// print(await this.webViewController.injectScriptCode("""
//// ["3",56,"sdf"];
//// """));
//// print(await this.webViewController.injectScriptCode("""
//// var x = {"as":4, "dfdfg": 6};
//// x;
//// """));
////
//// await this.webViewController.injectScriptFile("https://code.jquery.com/jquery-3.3.1.min.js");
//// this.webViewController.injectScriptCode("""
//// \$( "body" ).html( "Next Step..." )
//// """);
////
//// // add custom css
//// this.webViewController.injectStyleCode("""
//// body {
//// background-color: #3c3c3c !important;
//// }
//// """);
//// this.webViewController.injectStyleFile("https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css");
// }
//
// @override
// Future onScrollChanged(int x, int y) async {
//// print(x.toString() + " " + y.toString());
// }
//
// @override
// void onLoadError(String url, int code, String message) {
// print("\n\nCan't load $url.. Error: $message\n\n");
// }
//
// @override
// void onProgressChanged(int progress) {
//// print("Progress: $progress");
// }
//
// @override
// void onExit() {
// print("\n\nBrowser closed!\n\n");
// }
//
// @override
// void shouldOverrideUrlLoading(String url) {
// print("\n\n override $url\n\n");
// this.webViewController.loadUrl(url);
//
//// var postData = "username=my_username&password=my_password";
//// inAppBrowserFallback.webViewController.postUrl("http://localhost:8080", utf8.encode(postData));
//
//// var htmlData = """
////<!doctype html>
////<html lang="en">
////<head>
//// <meta charset="UTF-8">
//// <meta name="viewport"
//// content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
//// <meta http-equiv="X-UA-Compatible" content="ie=edge">
//// <title>Document</title>
//// <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
//// <link rel="stylesheet" href="http://localhost:8080/assets/css/style.css">
//// <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
////</head>
////<body>
////<div class="container">
//// <div class="container">
//// <img src="http://localhost:8080/assets/images/dart.svg" alt="dart logo">
//// <div class="row">
//// <div class="col-sm">
//// One of three columns
//// </div>
//// <div class="col-sm">
//// One of three columns
//// </div>
//// <div class="col-sm">
//// One of three columns
//// </div>
//// </div>
//// </div>
//// <script>
//// console.log("hello");
//// </script>
////</div>
////</body>
////</html>
//// """;
//// inAppBrowserFallback.webViewController.loadData(htmlData);
// }
//
// @override
// void onLoadResource(
// WebResourceResponse response, WebResourceRequest request) {
// print("Started at: " +
// response.startTime.toString() +
// "ms ---> duration: " +
// response.duration.toString() +
// "ms " +
// response.url);
//// if (response.headers["content-length"] != null)
//// print(response.headers["content-length"] + " length");
// }
//
// @override
// void onConsoleMessage(ConsoleMessage consoleMessage) {
// print(consoleMessage.message);
//// print("""
//// console output:
//// sourceURL: ${consoleMessage.sourceURL}
//// lineNumber: ${consoleMessage.lineNumber}
//// message: ${consoleMessage.message}
//// messageLevel: ${consoleMessage.messageLevel}
//// """);
// }
//}
//
//MyInAppBrowser inAppBrowserFallback = new MyInAppBrowser();
//
//class MyChromeSafariBrowser extends ChromeSafariBrowser {
// MyChromeSafariBrowser(browserFallback) : super(browserFallback);
//
// @override
// void onOpened() {
// print("ChromeSafari browser opened");
// }
//
// @override
// void onLoaded() {
// print("ChromeSafari browser loaded");
// }
//
// @override
// void onClosed() {
// print("ChromeSafari browser closed");
// }
//}
//
//// adding a webview fallback
//MyChromeSafariBrowser chromeSafariBrowser =
// new MyChromeSafariBrowser(inAppBrowserFallback);
//InAppLocalhostServer localhostServer = new InAppLocalhostServer();
//
//Future main() async {
//// await localhostServer.start();
// runApp(new MyApp());
//}
//
//class MyApp extends StatefulWidget {
// @override
// _MyAppState createState() => new _MyAppState();
//}
//
//class _MyAppState extends State<MyApp> {
// @override
// void initState() {
// super.initState();
//// int indexTest = inAppBrowserFallback.webViewController.addJavaScriptHandler("handlerTest",
//// (arguments) async {
//// print("handlerTest arguments");
//// print(arguments);
//// });
//// int indexTest2 = inAppBrowserFallback.webViewController.addJavaScriptHandler("test2", (arguments) async {
//// print("handlerTest2 arguments");
//// print(arguments);
//// inAppBrowserFallback.webViewController.removeJavaScriptHandler("test", indexTest);
//// });
// }
//
// @override
// Widget build(BuildContext context) {
// return new MaterialApp(
// home: new Scaffold(
// appBar: new AppBar(
// title: const Text('Flutter InAppBrowser Plugin example app'),
// ),
// body: new Center(
// child: new RaisedButton(
// onPressed: () async {
//// await chromeSafariBrowser.open("https://flutter.io/");
////
//// await InAppBrowser.openWithSystemBrowser("https://flutter.io/");
////
//// await inAppBrowserFallback.open(url: "http://localhost:8080/assets/index.html", options: {
//// "useOnLoadResource": true,
//// //"hidden": true,
//// //"toolbarTopFixedTitle": "Fixed title",
//// //"useShouldOverrideUrlLoading": true
//// //"hideUrlBar": true,
//// //"toolbarTop": false,
//// "toolbarBottom": false
//// });
////
//// await inAppBrowserFallback.openFile("assets/index.html", options: {
//// "useOnLoadResource": true,
//// //"hidden": true,
//// //"useShouldOverrideUrlLoading": true
//// //"hideUrlBar": true,
//// //"toolbarTop": false,
//// //"toolbarBottom": false
//// });
////
//// await CookieManager.setCookie("https://flutter.io/", "my_cookie2", "cookieValue2", domain: "flutter.io", expiresDate: 1540838864611);
//// await CookieManager.setCookie("https://flutter.io/", "my_cookie", "cookieValue", domain: "flutter.io", expiresDate: 1540838864611);
//
//// await inAppBrowserFallback.openData("<html><head><title>Data example</title></head><body><p>This is a \"p\" tag</p></body></html>", options: {});
//
// await inAppBrowserFallback.open(url: "https://flutter.io/", options: {
// //"useOnLoadResource": true,
// //"hidden": true,
// //"toolbarTopFixedTitle": "Fixed title",
// "useShouldOverrideUrlLoading": true,
// //"hideUrlBar": true,
// //"toolbarTop": false,
// //"toolbarBottom": false
// });
//
// },
// child: Text("Open InAppBrowser")
// ),
// ),
// ),
// );
// }
//}
// Inline WebView Example
import
'dart:async'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_inappbrowser/flutter_inappbrowser.dart'
;
Future
main
(
)
async
{
runApp
(
new
MyApp
());
}
class
MyApp
extends
StatefulWidget
{
@override
_MyAppState
createState
()
=>
new
_MyAppState
();
}
class
_MyAppState
extends
State
<
MyApp
>
{
InAppWebViewController
webView
;
String
url
=
""
;
double
progress
=
0
;
@override
void
initState
()
{
super
.
initState
();
}
@override
void
dispose
()
{
super
.
dispose
();
}
@override
Widget
build
(
BuildContext
context
)
{
return
MaterialApp
(
home:
Scaffold
(
appBar:
AppBar
(
title:
const
Text
(
'Inline WebView example app'
),
),
body:
Container
(
child:
Column
(
children:
<
Widget
>[
Container
(
padding:
EdgeInsets
.
all
(
20.0
),
child:
Text
(
"CURRENT URL
\n
${ (url.length > 50) ? url.substring(0, 50) + "..." : url }
"
),
),
(
progress
!=
1.0
)
?
LinearProgressIndicator
(
value:
progress
)
:
null
,
Expanded
(
child:
Container
(
margin:
const
EdgeInsets
.
all
(
10.0
),
decoration:
BoxDecoration
(
border:
Border
.
all
(
color:
Colors
.
blueAccent
)
),
child:
InAppWebView
(
initialUrl:
"https://flutter.io/"
,
//initialData: InAppWebViewInitialData("<html><head><title>Data example</title></head><body><p>This is a \"p\" tag</p></body></html>"),
initialHeaders:
{
},
initialOptions:
{
},
onWebViewCreated:
(
InAppWebViewController
controller
)
{
webView
=
controller
;
},
onLoadStart:
(
InAppWebViewController
controller
,
String
url
)
{
print
(
"started
$url
"
);
setState
(()
{
this
.
url
=
url
;
});
},
onProgressChanged:
(
InAppWebViewController
controller
,
int
progress
)
{
setState
(()
{
this
.
progress
=
progress
/
100
;
});
},
),
),
),
ButtonBar
(
alignment:
MainAxisAlignment
.
center
,
children:
<
Widget
>[
RaisedButton
(
child:
Icon
(
Icons
.
arrow_back
),
onPressed:
()
{
if
(
webView
!=
null
)
{
webView
.
goBack
();
}
},
),
RaisedButton
(
child:
Icon
(
Icons
.
arrow_forward
),
onPressed:
()
{
if
(
webView
!=
null
)
{
webView
.
goForward
();
}
},
),
RaisedButton
(
child:
Icon
(
Icons
.
refresh
),
onPressed:
()
{
if
(
webView
!=
null
)
{
webView
.
reload
();
}
},
),
],
),
].
where
((
Object
o
)
=>
o
!=
null
).
toList
(),
),
),
bottomNavigationBar:
BottomNavigationBar
(
currentIndex:
0
,
items:
[
BottomNavigationBarItem
(
icon:
Icon
(
Icons
.
home
),
title:
Text
(
'Home'
),
),
BottomNavigationBarItem
(
icon:
Icon
(
Icons
.
mail
),
title:
Text
(
'Item 2'
),
),
BottomNavigationBarItem
(
icon:
Icon
(
Icons
.
person
),
title:
Text
(
'Item 3'
)
)
],
),
),
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment