4 Réponses :


1
votes

4 commentaires

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



0
votes

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"),
          ),
        ),
      },
    );


1 commentaires

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.



3
votes

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:

 entrez la description de l'image ici


0 commentaires

3
votes

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 code > les balises pourraient être imbriquées comme ça, mais apparemment ça va.


0 commentaires