web-dev-qa-db-ja.com

Flutter WebのWebView

Flutter for WebでWebビューを表示しようとしていますが、次のエラーが発生しました。

PlatformException(Unregistered factory, No factory registered for viewtype 'plugins.flutter.io/webview', null)

Flutter WebでWebViewを表示する方法はありますか?

3
Pyth0nGh057

@ mohamed-salahによる回答は役に立ちますが、画面にロードシンボルしか表示されませんでした。 webviewウィジェット内にWillPopScopeを置く必要があります。次のコードを使用して、webviewを適切にロードします-

pubspec.yaml依存関係を追加

flutter_webview_plugin: ^0.3.9+1 // replace with latest version

StatefulWidgetクラスでは、次のコードを使用します-

class _WebViewLoadingState extends State<Details> {
  final _webViewPlugin = FlutterWebviewPlugin();

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    // on pressing back button, exiting the screen instead of showing loading symbol
    _webViewPlugin.onDestroy.listen((_) {
      if (Navigator.canPop(context)) {
        // exiting the screen
        Navigator.of(context).pop();
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    // WillPopScope will prevent loading
    return WillPopScope(
      child: WebviewScaffold(
        url: "https://www.google.com",
        withZoom: false,
        withLocalStorage: true,
        withJavascript: true,
        appCacheEnabled: true,
        appBar: AppBar(
          title: Text("Browser"),
        ),
      ),
      onWillPop: () {
        return _webViewPlugin.close();
      }
    );
  }
}
0
Rohan Kandwal

このパッケージを使用できます: https://pub.dev/packages/flutter_webview_plugin

そしてここにあなたが使用できる実用的な例があります:

import 'package:flutter/material.Dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.Dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var title = 'some title';
    return MaterialApp(
        title: title,
        home: WebviewScaffold(
          url: "yourwebsite.com",
          withZoom: false,
          withLocalStorage: true,
        ));
  }
}
0
Mohamed Salah