173 lines
5.2 KiB
Dart
173 lines
5.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_inappbrowser/flutter_inappbrowser.dart';
|
|
|
|
class MyInAppBrowser extends InAppBrowser {
|
|
|
|
@override
|
|
Future onLoadStart(String url) async {
|
|
print("\n\nStarted $url\n\n");
|
|
//print("\n\n ${await this.isHidden()} \n\n");
|
|
}
|
|
|
|
@override
|
|
Future onLoadStop(String url) async {
|
|
print("\n\nStopped $url\n\n");
|
|
|
|
// await this.injectScriptCode("window.flutter_inappbrowser.callHandler('handlerTest', 1, 5,'string', {'key': 5}, [4,6,8]);");
|
|
// await this.injectScriptCode("window.flutter_inappbrowser.callHandler('handlerTest2', false, null, undefined);");
|
|
// await this.injectScriptCode("setTimeout(function(){window.flutter_inappbrowser.callHandler('handlerTest', 'anotherString');}, 1000);");
|
|
//
|
|
// await this.injectScriptCode("console.log({'testObject': 5});");
|
|
// await this.injectScriptCode("console.warn('testWarn',null);");
|
|
// await this.injectScriptCode("console.log('testObjectStringify', JSON.stringify({'asd': 5}));");
|
|
// await this.injectScriptCode("console.info('testInfo', 6);");
|
|
// await this.injectScriptCode("console.error('testError', false);");
|
|
// await this.injectScriptCode("console.debug('testDebug', true);");
|
|
// print(await this.injectScriptCode("document.body.innerHTML"));
|
|
// print(await this.injectScriptCode("null"));
|
|
// print(await this.injectScriptCode("undefined"));
|
|
// print(await this.injectScriptCode("3"));
|
|
// print(await this.injectScriptCode("""
|
|
// function asd (a,b) {
|
|
// return a+b;
|
|
// };
|
|
// asd(3,5);
|
|
// """));
|
|
// print(await this.injectScriptCode("""
|
|
// ["3",56,"sdf"];
|
|
// """));
|
|
// print(await this.injectScriptCode("""
|
|
// var x = {"as":4, "dfdfg": 6};
|
|
// x;
|
|
// """));
|
|
//print("\n\n ${await this.isHidden()} \n\n");
|
|
|
|
// await this.injectScriptFile("https://code.jquery.com/jquery-3.3.1.min.js");
|
|
// this.injectScriptCode("""
|
|
// \$( "body" ).html( "Next Step..." )
|
|
// """);
|
|
//
|
|
// // add custom css
|
|
// this.injectStyleCode("""
|
|
// body {
|
|
// background-color: #3c3c3c !important;
|
|
// }
|
|
// """);
|
|
// this.injectStyleFile("https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css");
|
|
}
|
|
|
|
@override
|
|
void onLoadError(String url, int code, String message) {
|
|
print("\n\nCan't load $url.. Error: $message\n\n");
|
|
}
|
|
|
|
@override
|
|
void onExit() {
|
|
print("\n\nBrowser closed!\n\n");
|
|
}
|
|
|
|
@override
|
|
void shouldOverrideUrlLoading(String url) {
|
|
print("\n\n override $url\n\n");
|
|
this.loadUrl(url);
|
|
}
|
|
|
|
@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("""
|
|
// 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);
|
|
|
|
void main() {
|
|
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.addJavaScriptHandler("handlerTest", (arguments) async {
|
|
// print("handlerTest arguments");
|
|
// print(arguments);
|
|
// });
|
|
// int indexTest2 = inAppBrowserFallback.addJavaScriptHandler("test2", (arguments) async {
|
|
// print("handlerTest2 arguments");
|
|
// print(arguments);
|
|
// inAppBrowserFallback.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: () {
|
|
//chromeSafariBrowser.open("https://flutter.io/");
|
|
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")
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|