LoginSignup
9
8

More than 5 years have passed since last update.

FlutterでWebViewを使う

Posted at

FlutterでWebViewを使うためには少しいじる必要があります。

flutter_webview_plugin

Flutterで Nativeの WebView を呼び出すには flutter_webview_plugin の依存を追加する必要があります。

pubspec.yaml
dependencies:
  flutter_webview_plugin: "0.2.1+2"

バージョンはこちら からご覧ください。

ターミナル上で

flutter packages get

インストールすることで使えるようになります。

また、WebViewはWdigetTreeには統合されていないためSnackBarやDialogを使うところはできません。

インポート文は

import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';

実装

Flutter Navigationを利用して起動します。
公式サンプルのままですが


new MaterialApp(
      routes: {
        "/": (_) => new WebviewScaffold(
              url: "https://www.google.com",
              appBar: new AppBar(
                title: new Text("Widget webview"),
              ),
            )
      },
    );

WebviewScaffold を使ってその中で諸々セットして使います。
特に難しいことはありません。

その他の使い方

WebViewはシングルトンインスタンスで提供されているのでどこからでもイベントをハンドリングできます。

WebView内でページが移動した際のイベント

WebViewで移動するイベントをハンドリングできます。

    final flutterWebViewPlugin = new FlutterWebviewPlugin();

    flutterWebViewPlugin.onUrlChanged.listen((String url) {
      print(url);
    });

WebView内のスクロールイベント

WebView内のスクロールイベントをハンドリングできます。

    flutterWebViewPlugin.onScrollYChanged.listen((double offsetY) {
      print(offsetY);
    });

    flutterWebViewPlugin.onScrollXChanged.listen((double offsetX) {
      print(offsetX);
    });

WebViewを隠す、隠されたやつを表示する

WebView を隠したり表示したりするには

    // 表示する
    flutterWebViewPlugin.launch("https://www.google.com", hidden: false);

    flutterWebViewPlugin.launch("url",hidden:true);

単純に隠したり表示したりするなら

    flutterWebViewPlugin.show();
    flutterWebViewPlugin.hide();

もあります。

リロード

flutterWebViewPlugin.reloadUrl(url)

JS実行

flutterWebViewPlugin.evalJavascript(code)

code は String です。

その他イベント

  • Stream onDestroy
  • Stream onStateChanged
  • Stream onError

WebViewが破壊されたとき
WebViewのステータスが変わった時
WebViewでエラーが起きた時 など。

9
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8