Exécutez l'exemple d'application webview_flutter ( https://github.com/flutter / plugins / tree / master / packages / webview_flutter / example ) avec inital_url: " https://kreatryx.com a > " Sur Android, il affiche simplement un écran blanc avec la barre de discussion Zopim en bas à droite. Sur iOS, cela fonctionne bien. Une solution pour Android?
Ce que j'ai déjà essayé: 1. Développement du canal Flutter 2. Maître des canaux Flutter
4 Réponses :
<❯update
Semblable à Android Webview: "Uncaught TypeError: Impossible de lire la propriété 'getItem' de null "
settings.setDomStorageEnabled (true);
est manquant.
Problème associé https://github.com/flutter/flutter/issues/26347 a>
<❯original
webview_flutter ne redirige actuellement pas automatiquement.
https://kreatryx.com
redirige vers https://www.kreatryx.com
et le plugin ne suit pas cette redirection et montre simplement ce que https://kreatryx.com
renvoie, ce qui n'est rien.
Android utilise Chrome, iOS utilise Safari, donc un comportement différent n'est pas une grande surprise même s'ils sont censés se comporter de la même manière dans la mesure du possible.
Mon erreur est exactement la même que l'erreur dans le problème Android Webview mentionné ci-dessus. J'espère juste que settings.setDomStorageEnabled (true); résout le problème. Quoi qu'il en soit, merci et j'ai mis à jour ma question avec la capture d'écran sur les deux systèmes d'exploitation.
J'ai pu résoudre le problème en utilisant la réponse originale , et j'ai publié ma réponse ici pour cela. Concernant la mise à jour , pouvez-vous s'il vous plaît expliquer comment obtenir l'instance pour settings
et où l'appel à settings.setDomStorageEnabled (true);
devrait être made .. est-ce en code Flutter ou en code iOS? Je n'ai pas pu trouver de référence à ce sujet jusqu'à présent.
@GeneBo github.com/flutter/plugins/pull/1836/files pourrait Aidez-moi
Comme il existe un autre plugin disponible qui a la capacité de rediriger automatiquement vers la page demandée. Utilisez le plugin Dart donné: flutter_webview_plugin 0.3.0 + 2
Vous pouvez utiliser ce plugin à partir de cette URL: https://pub.dartlang.org/packages/flutter_webview_plugin#-readme-tab-
Exemple de code trouvé ici: p>
new MaterialApp( routes: { "/": (_) => new WebviewScaffold( url: "https://kreatryx.com", appBar: new AppBar( title: new Text("Widget webview"), ), ), }, );
C'est pour le dernier recours. C'est juste que le plugin que vous avez mentionné fonctionne bien avec une mise en garde qu'il flotte au-dessus du flottement afin que le snackbar ou l'un de ces composants se cache derrière lui.
Vous pouvez utiliser mon plugin flutter_inappwebview , qui est un plugin Flutter qui vous permet d'ajouter des WebViews en ligne ou ouvrez une fenêtre de navigateur dans l'application et propose de nombreux événements, méthodes et options pour contrôler les vues Web.
Exemple complet utilisant votre URL:
import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart'; Future main() async { runApp(new MyApp()); } class MyApp extends StatefulWidget { @override _MyAppState createState() => new _MyAppState(); } class _MyAppState extends State<MyApp> { @override void initState() { super.initState(); } @override void dispose() { super.dispose(); } @override Widget build(BuildContext context) { return MaterialApp( home: InAppWebViewPage() ); } } class InAppWebViewPage extends StatefulWidget { @override _InAppWebViewPageState createState() => new _InAppWebViewPageState(); } class _InAppWebViewPageState extends State<InAppWebViewPage> { InAppWebViewController webView; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("InAppWebView") ), body: Container( child: Column(children: <Widget>[ Expanded( child: Container( child: InAppWebView( initialUrl: "https://kreatryx.com", initialHeaders: {}, initialOptions: InAppWebViewWidgetOptions( inAppWebViewOptions: InAppWebViewOptions( debuggingEnabled: true, ), androidInAppWebViewOptions: AndroidInAppWebViewOptions( domStorageEnabled: true, databaseEnabled: true, ), ), onWebViewCreated: (InAppWebViewController controller) { webView = controller; }, onLoadStart: (InAppWebViewController controller, String url) { }, onLoadStop: (InAppWebViewController controller, String url) { }, ), ), ), ])) ); } }
Cela fonctionne bien sur les plates-formes Android et iOS. Voici le résultat:
Grâce à la référence aux problèmes github de ce post, la solution suivante m'a permis de modifier Info. plist :
<key>io.flutter.embedded_views_preview</key> <string>YES</string> <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> <key>NSAllowsArbitraryLoadsInWebContent</key> <true/> </dict>
Je suis nouveau dans l'utilisation de Info.plist , et je ne savais pas si le