web-dev-qa-db-ja.com

FlutterでWebViewを通じてPDFをダウンロード/作成する方法

私はWebViewScaffordを作成しましたが、WebViewからの閲覧中に何もダウンロードできません、私は作ったボタンをクリックしていません。ダウンロードしてプレビューすることができる他のブラウザのように、どこに始まるのかわかりません、私はここで同じことを達成しようとしています。

class AppState extends State<App> {


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: <Widget>[
          Align(
            alignment: Alignment(1, 1),
            child: Container(
              child: Web(), // it is a statefulwidget that have WebviewScaffold, i have created it on a new page and imported/used here
            ),
          ),
          Column(
            mainAxisAlignment: MainAxisAlignment.end,
            children: <Widget>[
              Padding(
                padding: EdgeInsets.only(top: 20.0),
              )
            ],
          ),
          Align(
            alignment: Alignment(0.7, -0.93),
            child: FloatingActionButton(
                tooltip: "Share",
                child: Icon(
                  Icons.share,
                  color: Colors.amberAccent,
                ),
                onPressed: () {
                  _onShareTap();
                }),
          ),
        ],
      ),
    );
  }
 _

WebView内の印刷またはダウンロードボタンをクリックすると、他のブラウザのように機能するはずです。

8
user10182490

HTMLページの所有者である場合は、私にとって働く回避策を確認できます。 HTMLページ addonclickonclick( - === - )関数の関数:

function downloadpdf() {
      var currentHref = window.location.href;
      window.history.pushState(null, null, '/app/somepdf.pdf');
      setTimeout(() => window.location.replace(currentHref), 1000);
}
 _

Flutter Codeでリスナーを追加します。

StreamSubscription<String> _onWebViewUrlChanged;
_onWebViewUrlChanged =
    FlutterWebviewPlugin().onUrlChanged.listen((String url) {
      if (url.contains('.pdf')) {
        launchURL(url);
      }
});
 _

launchurlは外部ブラウザウィンドウで定義済みのURLを開きます。そのため、Flutter_WebView_PluginからPDF/etcをダウンロードできます。

あなたはあなたのアプリ固有のJS/Flutter Magicを追加する必要があります

1
Friendka