【Flutter】公式より多機能なWebViewプラグイン「flutter_inappwebview」の使い方

  • このエントリーをはてなブックマークに追加

以前に公式のWebViewプラグイン「webview_flutter」について何度か紹介しましたが、その後「flutter_inappwebview」というとてもマルチな機能を搭載していて便利なプラグインを知りました。

webview_flutterの記事はこちら↓

【Flutter】WebViewを使ってWebサイトとローカルHTMLファイルを表示させる方法

今回はこの「flutter_inappwebview」の特徴と使い方を紹介したいと思います。

flutter_inappwebviewで出来ること

このプラグインでは、WebView機能だけでなく、アプリ内で表示できるブラウザを扱う事ができます。

(公式のプラグインでは恐らくWebView機能のみ)

機能は大きくわけて「InAppWebView」「InAppBrowser」「ChromeSafariBrowser」の3つ用意されています。

この3つの機能の特徴と使い方について解説しますが、このプラグインはとても細かい設定が可能でこの記事で全てを書くことは出来ない為、それぞれの特徴と基本的な使い方を紹介します。

その他の詳しい情報は、githubのREADMEに細かく載っていますので確かめてみてください。

Pub.dev:https://pub.dev/packages/flutter_inappwebview

github:https://github.com/pichillilorenzo/flutter_inappwebview

 

3つの機能の特徴と使い方

前準備

pubspec.ymlにプラグインの設定を行います。

 

使用するDartファイルに以下を記述しインポートします。

 

InAppWebView (WebView表示機能)

スタンダードなWebView機能です。

githubをみてみると、下のように書かれています。

The plugin relies on Flutter’s mechanism (in developers preview) for embedding Android and iOS native views: AndroidView and UiKitView. Known issues are tagged with the platform-views label in the Flutter official repo. Keyboard support within webviews is also experimental.

「AndroidView」「UiKitView」を使ってネイティブのWebView機能をFlutterで表示させているようです。

  • Android:

android

  • iOS:

ios

 

・実装方法

InAppWebViewクラス内の引数を指定してWebViewをカスタマイズしていきます。

引数「initialUrl」または、引数「initialFaile」で表示させるwebサイトのURLを指定します。

「initialFaile」はプロジェクト内部のHTMLファイルを読み込む場合に指定します。

 

引数「initialOptions」では、WebViewの詳細な設定を行います。

共通、Android用、iOS用の3種類それぞれ設定可能です。

 

引数「onWebViewCreated」では、WebView生成後に処理させる関数を指定します。

この関数の引数のInAppWebViewControllerクラスのオブジェクトを取得でき、

生成したWebViewの情報を取得や変更ができる様々な関数を扱う事ができるようになります。

上のソースでは、例として表示されているサイトのfavicon情報をControllerを使って取得させています。

 

InAppBrowser (ブラウザ表示機能)

ネイティブWebViewを使用したアプリ内ブラウザ。

このクラスを利用する事でアプリ内にブラウザを実装する事ができます。

  • iOS:

ios

  • Android:

android

 

・実装方法

コールバックをオーバーライドしてブラウザイベントを管理するために、InAppBrowserクラスを拡張するクラスを作成します。

とREADMEで書かれている為、InAppBrowserを継承したクラスを新たに作成して、ブラウザイベント用コールバック関数をオーバーライドします。

 

ChromeSafariBrowser (ブラウザ表示機能)

AndroidではChrome、iOSではSafariを内部ブラウザとして使用するためのクラスです。

Chrome Custom Tabs Android / SFSafariViewController on iOS.

と記述されており、Android、iOSでそれぞれの機能を使う事ができるようです。

  • iOS:

ios

  • Android:

android

 

・実装方法

InAppBrowserフォールバックインスタンスを使用してChromeSafariBrowserインスタンスを初期化できます。」とあるので、先ほどと同じようにInAppBrowserクラスを継承したクラスと、ChromeSafariBrowserクラスを継承したクラスをそれぞれ用意します。

 

最後に

他にここでは紹介できなかった機能もたくさん備わっているため、本格的にWebViewや内部ブラウザ作成を検討している方は、一度試してみてください。

検討の参考になれば幸いです。

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*