flutter_inappbrowser 0.4.0 copy "flutter_inappbrowser: ^0.4.0" to clipboard
flutter_inappbrowser: ^0.4.0 copied to clipboard

discontinued
outdated

A Flutter plugin that allows you to open an in-app browser window. (inspired by the popular cordova-plugin-inappbrowser).

example/lib/main.dart

import 'dart:async';
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");

    //print("\n\n ${await this.isHidden()} \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;
//    """));
//
//    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);

Future main() async {
  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: () async {
//              await chromeSafariBrowser.open("https://flutter.io/");

//              await InAppBrowser.openWithSystemBrowser("https://flutter.io/");

              await inAppBrowserFallback.openOnLocalhost("assets/index.html", options: {
                "useOnLoadResource": true,
                //"hidden": true,
                //"toolbarTopFixedTitle": "Fixed title",
                //"useShouldOverrideUrlLoading": true
                //"hideUrlBar": true,
                //"toolbarTop": false,
                //"toolbarBottom": false
              });

//              await inAppBrowserFallback.open(url: "assets/index.html", options: {
//                "isLocalFile": true,
//                "useOnLoadResource": true,
//                //"hidden": true,
//                //"toolbarTopFixedTitle": "Fixed title",
//                //"useShouldOverrideUrlLoading": true
//                //"hideUrlBar": true,
//                //"toolbarTop": false,
//                //"toolbarBottom": false
//              });

//              await inAppBrowserFallback.open(url: "https://flutter.io/", options: {
//                //"useOnLoadResource": true,
//                //"hidden": true,
//                //"toolbarTopFixedTitle": "Fixed title",
//                //"useShouldOverrideUrlLoading": true
//                //"hideUrlBar": true,
//                //"toolbarTop": false,
//                //"toolbarBottom": false
//              });
              //await inAppBrowserFallback.openOnLocalhost("assets/index.html");
              },
              child: Text("Open InAppBrowser")),
        ),
      ),
    );
  }
}
16
likes
0
pub points
66%
popularity

Publisher

verified publisherinappwebview.dev

A Flutter plugin that allows you to open an in-app browser window. (inspired by the popular cordova-plugin-inappbrowser).

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flutter, mime, uuid

More

Packages that depend on flutter_inappbrowser