J'ai essayé d'utiliser le plugin webview_flutter dans Flutter. Mais impossible de trouver pour définir useragent là-dedans. Ça devrait être là, non? c'est une fonction de base de la visualisation Web. Y a-t-il un moyen d'y parvenir? Merci d'avance.
3 Réponses :
Essayez d'utiliser le Flutter_webview_plugin ici
vous pouvez ajouter les variables ci-dessous (y compris userAgent) comme vu dans leur documentation:
Future<Null> launch(String url, { Map<String, String> headers: null, bool withJavascript: true, bool clearCache: false, bool clearCookies: false, bool hidden: false, bool enableAppScheme: true, Rect rect: null, **String userAgent: null,** bool withZoom: false, bool withLocalStorage: true, bool withLocalUrl: true, bool scrollBar: true, bool supportMultipleWindows: false, bool appCacheEnabled: false, bool allowFileURLs: false, });
WebView( userAgent: "random", initialUrl: "https://stackoverflow.com/questions/54102162/how-to-use-user-agent-in-webview-flutter-flutter", )
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.
Pour définir un agent utilisateur personnalisé, vous pouvez simplement utiliser l'option userAgent
de InAppWebViewOptions
. Exemple complet:
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://flutter.dev/", initialHeaders: {}, initialOptions: InAppWebViewWidgetOptions( inAppWebViewOptions: InAppWebViewOptions( debuggingEnabled: true, userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" ), ), onWebViewCreated: (InAppWebViewController controller) { webView = controller; }, onLoadStart: (InAppWebViewController controller, String url) { }, onLoadStop: (InAppWebViewController controller, String url) { }, ), ), ), ])) ); } }
Après des recherches, j'ai trouvé cela et testé avec succès.
const user_agent = 'Mozilla / 5.0 (Linux; Android 6.0; Nexus 5 Build / MRA58N) AppleWebKit / 537.36 (KHTML, comme Gecko) Chrome / 62.0.3202.94 Mobile Safari / 537.36';