web-dev-qa-db-fra.com

WebView dans Flutter Web

J'essaie d'afficher une vue Web dans Flutter for Web, mais j'ai eu l'erreur suivante:

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

Existe-t-il un moyen d'afficher une WebView dans Flutter Web?

3
Pyth0nGh057

Réponse de @ mohamed-salah est utile, cependant, je n'obtenais qu'un symbole de chargement sur mon écran. Nous devons mettre webview dans le widget WillPopScope. Utilisez le code suivant pour charger correctement webview -

Dans pubspec.yaml ajouter une dépendance

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

Dans la classe StatefulWidget, utilisez le code suivant -

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

vous pouvez utiliser ce package: https://pub.dev/packages/flutter_webview_plugin

et voici un exemple de travail que vous pouvez utiliser:

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