3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

FlutterでWebViewをダイアログ内に表示する

Posted at

概要

FlutterでWebViewをダイアログ表示するのに苦労したので残します。
今回の要件は、Firebase Hostingを用いてホスティングしたHTML文書をダイアログ内のWebViewで表示することです。

詳細

FlutterのWebView表示にはflutter_inappbrowserを使いました

使い方は簡単です。

/// これでWebViewが表示できる
InAppWebView(initialUrl: url);

/// ダイアログ内で表示する場合
showDialog(
  context: context,
  builder: (BuildContext context) {
    return InAppWebView(initialUrl: url);
  }
)

flutter_webview_pluginはダイアログ表示ができない

https://github.com/fluttercommunity/flutter_webview_plugin/issues/69
こちらのIssueで言及されていますが、このプラグインはFlutterのWidgetTree内に描画しているのではなくScaffoldの一番上に表示されてしまうため、Dialogのようなコンテナ内に表示できません。
実際にダイアログ内に入れて動かしてみたところ、ダイアログからはみ出るような形で描画されてしまいました。

image (2).png

Flutter公式のwebview_flutterはHTMLの読み込みでバグがある

https://github.com/flutter/flutter/issues/29446
こちらのプラグインを使用したところ、ホスティングしたHTML文書を読み込んだ際に上記Issueと同様のエラーが発生しました。
コメントを見たところ、どうやら元を辿ればChomiumのバグのようです。

https://github.com/flutter/plugins/pull/1360
2019年3月27日現在、どうやら上記のプルリクエストでIssueの修正がされたようですが、こちらのIssueコメントによるとまだ修正しきれていないようで再オープンとなっています。

3
3
0

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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?