标签: flutterwebviewplugin

Flutter WEB 下载选项

我正在制作应该从用户数据生成文件的 flutter web 应用程序。并且可以选择下载输出文件。

但是我找不到任何适用于 flutter web 的选项/包:(

有人可以帮我吗?

dart flutter flutterwebviewplugin flutter-web

29
推荐指数
5
解决办法
1万
查看次数

Flutter Web 视图在发布模式下不起作用

我正在创建一个 Flutter 应用程序。

如果我在调试模式下运行这个应用程序,webview效果很好

但如果我在发布模式下运行此应用程序,它会显示空白屏幕。正在显示PlatformException

我尝试从 github issues 获取帮助,但找不到解决方案。

显现

<uses-permission android:name="android.permission.INTERNET"/>
Run Code Online (Sandbox Code Playgroud)

构建.gradle

minSdkVersion 20
targetSdkVersion 29
Run Code Online (Sandbox Code Playgroud)

pubspec.yaml

webview_flutter: ^1.0.7
Run Code Online (Sandbox Code Playgroud)

错误日志

E/flutter (16872): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: PlatformException(error, java.lang.IllegalStateException: Trying to create a platform view of unregistered type: plugins.flutter.io/webview
E/flutter (16872):      at io.flutter.plugin.platform.j$a.g(Unknown Source:229)
E/flutter (16872):      at io.flutter.embedding.engine.i.j$a.b(Unknown Source:152)
E/flutter (16872):      at io.flutter.embedding.engine.i.j$a.j(Unknown Source:144)
E/flutter (16872):      at e.a.c.a.j$a.a(Unknown Source:17)
E/flutter (16872):      at io.flutter.embedding.engine.e.b.d(Unknown Source:57)
E/flutter (16872):      at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(Unknown Source:4)
E/flutter (16872):      at android.os.MessageQueue.nativePollOnce(Native Method)
E/flutter (16872):      at android.os.MessageQueue.next(MessageQueue.java:335) …
Run Code Online (Sandbox Code Playgroud)

android flutter flutterwebviewplugin

12
推荐指数
2
解决办法
6975
查看次数

Flutter WebView window.close() 不起作用(Android)

我无法使用具有window.close()功能的webview flutter 关闭打开的网页。

我在我的应用程序中使用webview_flutter。我一直在使用的网站有一个window.open()功能,可以打开一个包含不同 URL 的新窗口。在新窗口内,有一个关闭按钮可以使用 关闭新窗口window.close()。当我在笔记本电脑和移动设备上使用浏览器测试它时,这工作正常,但当我使用上述 webview 插件在 Flutter 应用程序上尝试时,它无法正常工作。

当我点击关闭按钮时,我在日志中收到此警告。

脚本可能只关闭由它打开的窗口。

我还尝试了其他插件,如flutter_webview_plugin,但也没有运气。

所以我想知道 Flutter webview 的这个功能是否已经可用?

请帮助我,非常感谢任何建议或解决方案。谢谢大家!

更新:我已经测试过但仍然无法正常工作的软件包

android android-webview flutter flutterwebviewplugin webview-flutter

7
推荐指数
1
解决办法
1336
查看次数

flutter_inappwebview 和 flutter_downloader - 不确定我做错了什么?

前期资料:

Language: Flutter/Dart
Flutter Packages: flutter_inappwebview, flutter_downloader
Run Code Online (Sandbox Code Playgroud)

我正在使用 Flutter 为 Android 构建的移动应用程序出现问题。该应用程序的一项功能是能够下载与 PDF 文件关联的链接。这些文件位于应用程序已经访问的服务器上。用户已通过应用程序登录,因此已建立身份验证。当单击包含 PDF 的 URL 时,它会执行重定向,并返回并下载主页(index.php)。我不知道这是如何发生的,但我有想法。

  1. 我需要在当前 webview 中进行下载(如在同一会话和窗口中)。
  2. 禁用 URL 重定向。
  3. 找出链接被重定向以进行身份​​验证的原因(假设它重定向到主页)。

任何想法或帮助将不胜感激。也很高兴提供更多信息。

在 main.dart 中:

onDownloadStart: (controller, url) async {
                print("onDownloadStart $url");
                final taskId = await FlutterDownloader.enqueue(
                  headers: {'My-Custom-Header': 'custom_value=564hgf34'},
                  url: url,
                  savedDir: (await getExternalStorageDirectory()).path,
                  showNotification: true, // show download progress in status bar (for Android)
                  openFileFromNotification: true, // click on notification to open downloaded file (for Android)
                );
                return taskId;
              },
Run Code Online (Sandbox Code Playgroud)

记录:

I/flutter (28552): onDownloadStart …
Run Code Online (Sandbox Code Playgroud)

android android-webview flutter flutterwebviewplugin flutter-web

7
推荐指数
1
解决办法
773
查看次数

flutter inappwebviewencodeURL 在 Android 中具有错误的字符串,而它在 iOS 中工作正常?

我在我们的应用程序中使用了 inappwebview 。我在iOS和Android的shouldOverrideUrlLoading方法中得到了不同的encodedUrl。虽然在 iOS 中它工作正常,但在 Android 中它没有给出正确的 url。

\n

编码后的URL

\n

iOS: %22坐标%22:%22%7B%5C%22y1%5C%22:193.0,%5C%22x1%5C%22:491.0,%5C%22y2%5C%22:162.0,%5C%22x2%5C %22:522.0%7D%22

\n

android : %22坐标%22:%22%7B/%22y1/%22:521.0,/%22x1/%22:753.0,/%22y2/%22:490.0,/%22x2/%22:784.0%7D%22

\n

解码后的URL

\n

iOS: "坐标" : "{"y1":521.0,"x1":753.0,"y2":490.0,"x2":784.0}"

\n

android: "坐标": "{/"y1/":521.0,/"x1/":753.0,/"y2/":490.0,/"x2/":784.0}"

\n

我得到了 iOS 和 Android 的不同编码字符串。您可以看到 \xe2\x80\x9ccoordinates\xe2\x80\x9d 值,对于 iOS,它是“%5C”,对于 Android,它是“/”。

\n
InAppWebView(\n          key: webViewKey,\n          initialUrlRequest: URLRequest(url: Uri.parse(widget.url)),\n          initialOptions: inAppWebViewGroupOptions(),\n          onWebViewCreated: (InAppWebViewController webViewController) async {\n            _appWebViewController = webViewController;\n            if (widget.onWebViewCreated != null) {\n              widget.onWebViewCreated!(_appWebViewController!);\n            }\n          },\n          onLoadStart: (InAppWebViewController controller, Uri? url) async {\n            if (widget.onProgressChanged != null) {\n              widget.onPageStarted!(url.toString());\n            }\n …
Run Code Online (Sandbox Code Playgroud)

android ios flutter flutterwebviewplugin flutter-inappwebview

7
推荐指数
0
解决办法
266
查看次数

Flutter 加载 HTML 的本地资源

我通过以下方式使用flutter_webview包将本地 HTML文件加载到小部件中:

FutureBuilder<String>(
  future: LocalLoader().loadLocal(),
  builder: (context, snapshot) {
    if (snapshot.hasData) {
//      return Text("${snapshot.data}");
      return WebView(
        initialUrl: new Uri.dataFromString(snapshot.data, mimeType: 'text/html').toString(),
        javascriptMode: JavascriptMode.unrestricted,
      );

    } else if (snapshot.hasError) {
      return Text("${snapshot.error}");
    }
    return CircularProgressIndicator();
  }
)
Run Code Online (Sandbox Code Playgroud)

它加载 HTML 就好了,但如果标签指向其他资源(例如同一位置的 CSS 文件或其他本地图像),它们将不会显示在 webview 中。

这些资产(CSS 和图像文件)被添加到项目中指定的 HTML 路径(相对本地路径)和pubspec中的位置

例如,其中一个 HTML 文件包含此元素:

<link rel=stylesheet href=styles/main.css>
Run Code Online (Sandbox Code Playgroud)

当 HTML 文件在 webview 中加载时,CSS 不会反映该页面的样式。如果我在 HTML 中手动添加/编写 CSS(使用<style>元素来定义它),它将正常工作。

关于如何让这些 HTML 加载其本地资源的任何建议?(即使这意味着改变包或它的实现方式)

也贴在这里

assets flutter flutterwebviewplugin

6
推荐指数
1
解决办法
4653
查看次数

在flutter中,如何注入`js`脚本`atDocumentStart`而不是`onload`?

我正在尝试在 Flutter 中创建一个webview用户可以作为 Web 浏览器的 Web 浏览器,js在加载文档之前向文档中注入一些代码(atDocumentStart)。

我尝试了几种方法,但似乎总是太晚注入代码(onload)。


final String injectScript =  ("some js code");

class WebPage extends StatefulWidget {
  WebPage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _WebPageState createState() => _WebPageState();
}

class _WebPageState extends State<WebPage> {
  GlobalKey<ScaffoldState> scaffoldState;
  bool isLoading = false;
  final assetIdController = TextEditingController(text: "");
  bool isValid = true;
  static Completer<WebViewController> _webViewController =
      Completer<WebViewController>();


  @override
  void initState() {
    super.initState();

  }

    Widget favoriteButton() {
    return FutureBuilder<WebViewController>(
        future: …
Run Code Online (Sandbox Code Playgroud)

webview dart wkwebview flutter flutterwebviewplugin

6
推荐指数
0
解决办法
1016
查看次数

如何在Flutter WebView中下载文件?

我正在使用Flutter Webview开发 Flutter webview 应用程序。

import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:url_launcher/url_launcher.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child : const WebView(
            initialUrl: 'https://google.com',
            javascriptMode: JavascriptMode.unrestricted,
          ),
        )
      )
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用 launchURL 插件,但这会在外部浏览器窗口中打开预定义的 url。

if (url.contains('.pdf')) {
    launchURL(url);
  }
Run Code Online (Sandbox Code Playgroud)

我想要的是在应用程序网络视图中下载文件。

flutter flutterwebviewplugin

6
推荐指数
1
解决办法
2606
查看次数

Flutter web - 当鼠标悬停在 iframe 的 HtmlElementView 小部件上时,父小部件不会滚动

在 Flutter Web 项目中,我们通过 HtmlElementView 小部件将 Webview 嵌入到列表中。当鼠标悬停在 HtmlElementView 小部件上时,父小部件不会滚动。

我们正在获取网页内容的高度并将该高度分配给容器高度。因此,由于内容高度和容器高度相同,因此没有滚动。但父小部件滚动不会被阻止。

当光标位于 HtmlElementView 内部时,光标根本不会移动。请告诉我是否有解决此问题的方法。下面是我的代码片段,

import 'dart:html' as html;
import 'dart:ui' as ui;

html.window.addEventListener('message', listen);
iframeElement.id = 'extra-frame';
iframeElement.src = webViewModel.guideUrl;
iframeElement.style.border = 'none';

// ignore: undefined_prefixed_name
ui.platformViewRegistry.registerViewFactory(
iframeElement.id,
(int viewId) {
return iframeElement;
},
);

Container(
height: webViewModel.webViewHeight != null ? webViewModel.webViewHeight : 300,
child: HtmlElementView(
key: UniqueKey(),
viewType: iframeElement.id,
)
)
Run Code Online (Sandbox Code Playgroud)

flutter flutter-layout flutterwebviewplugin flutter-web

6
推荐指数
1
解决办法
821
查看次数

如何解决“词法或预处理器问题 (Xcode):未找到 Flutter/Flutter.h' 文件”?

     In file included from /Users/shaifdihan/development/flutter/.pub-cache/hosted/pub.dartlang.org/webview_flutter_wkwebview-2.7.1/ios/Classes/JavaScriptChannelHandler.m:5:\n    /Users/shaifdihan/development/flutter/.pub-cache/hosted/pub.dartlang.org/webview_flutter_wkwebview-2.7.1/ios/Classes/JavaScriptChannelHandler.h:5:9: fatal error: 'Flutter/Flutter.h' file not found\n    #import <Flutter/Flutter.h>\n            ^~~~~~~~~~~~~~~~~~~\n    1 error generated.\n    note: Using new build system\n    note: Building targets in parallel\n    note: Planning build\n    note: Analyzing workspace\n    note: Constructing build description\n    note: Build preparation complete\n/Users/shaifdihan/StudioProjects/my_match_flutter/ios/Pods/Pods.xcodeproj: warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.5.99. (in target 'libPhoneNumber-iOS' from project 'Pods')\n    .\n    .\n    .\n
Run Code Online (Sandbox Code Playgroud)\n

我可以在互联网上找到解决问题的可行解决方案吗

\n
    \n
  • pod 解体、安装、更新、repo …

flutter flutterwebviewplugin flutter-ios flutter-ios-build

6
推荐指数
1
解决办法
8244
查看次数