【问题标题】:Flutter web app not working on mobile browser. How to debug the error if running flutter code on mobile browser?Flutter Web 应用程序无法在移动浏览器上运行。如果在移动浏览器上运行颤振代码,如何调试错误?
【发布时间】:2021-11-18 18:18:20
【问题描述】:

flutter web 应用程序在桌面 chrome 和 safari 浏览器上以调试和发布模式运行良好。但是,它不适用于处于调试和发布模式的移动浏览器。 我在服务器上上传了发布模式文件并尝试使用 URL 访问该网站,但一页无法正常工作。小部件设计完全损坏。

如果在移动浏览器上运行颤振代码,如何调试错误在哪里?请参阅下面的屏幕截图。

【问题讨论】:

标签: flutter dart flutter-web


【解决方案1】:

这是 Flutter Web 中很常见的错误,不用担心它很容易修复。由于无法在发布模式下找到错误消息或调试消息,我不知道如何在 stackoverflow.com 上搜索,因此我花了很多天时间才找到解决方案。

实际上并非如此,您可以通过进入 chrome 中的检查选项卡轻松阅读调试控制台。

在屏幕上右击> Inspect Element就可以了。

第一种方法

请再次在调试模式下运行您的应用,并仔细观察打印在 VSCode 调试控制台中的调试日志。你可以找到类似的东西。

Another exception was thrown: Incorrect use of ParentDataWidget. 

flutter: ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
    flutter: The following message was thrown during layout:
    flutter: A RenderFlex overflowed by 15 pixels on the right.
    flutter:
    flutter: The overflowing RenderFlex has an orientation of Axis.horizontal.

这些错误不会阻止应用程序运行,有时它不会显示任何在开发过程中在应用程序上工作的错误。尤其是父数据错误。

一旦您找到并修复此警告消息。您可以构建到发布模式和瞧。您可以让您的应用运行良好!

第二种方法

如果您无法从上述方法中理解问题。那么你可以这样接近。

构建您的生产版本(就像您已经拥有它一样)或使用调试控制台运行应用程序

flutter run -d chrome --release

您可以在 UI 上使用灰色框来获得与发布模式相同的外观。在代码中找到 Gray Box 出现的位置,您可以在该位置找到一些 Expanded() 小部件。

只需移除展开的小部件并重新检查代码即可。 如果有任何渲染 flex 溢出错误,用 SizedBox 或具有预定义宽度/高度的容器包装小部件,错误就会消失。

【讨论】:

  • 我试过 - 在 chrome 浏览器上调试 -- 将 chrome 模式更改为 chrome 移动模式。 .它就像将chrome桌面浏览器调整为迷你尺寸以使其成为移动视图..但它与移动浏览视图不同..如果我将chrome调整为移动视图仍然不会显示任何错误但是如果我打开它移动浏览然后我收到错误(见上图)。您可以查看实时链接 - 打开gamersgifts.in 并在桌面浏览器中打开任何产品,然后在移动浏览器上打开网站并转到任何产品页面。在那里你会看到错误。我想调试导致此问题的原因。
  • 那是因为chrome窗口在限制后不会缩小,所以不会变成手机屏幕的宽度。您可以在 Chrome Inspect Element 部分的控制台选项卡附近看到响应按钮。检查这个。 i.imgur.com/S7WxTPH.png
【解决方案2】:

我们没有看到代码。因此,很难确定。但是我在运行没有参数--web-renderer的应用程序构建时遇到了这样的问题

flutter build web

重点是默认情况下它使用不同的渲染器(CanvasKit 用于桌面,HTML 用于移动)。而且由于我使用了需要 CanvasKit 的东西,所以移动浏览器中的应用程序显示不正确。

使用适当的参数构建解决了我的问题

flutter build web --web-renderer canvaskit

Details can be found here

【讨论】:

  • 非常感谢您解决了我的问题!
【解决方案3】:

这可能是由于发布模式下的一些小部件溢出问题而发生的。尝试前往浏览器中的开发工具并切换到移动模式以缩小屏幕宽度。并且请比行不通的更具体,以便我们可以更好地帮助您。

【讨论】:

  • 您可以在此处查看实时错误 - 打开 gamersgifts.in 并在桌面浏览器中打开任何产品,然后在移动浏览器上打开网站并转到任何产品页面。在那里你会看到错误。我怎样才能找到错误在哪里?如何调试手机浏览器报错?
【解决方案4】:

这就是我所做的

  1. 启动 android avd

  2. 使用您的桌面 IP 和端口(例如 7357)启动 Flutter 应用 $ flutter run -d chrome --debug --web-hostname --web-port 7357

  3. 在 avd 上启动 chrome 并输入:例如192.168.10.4:7357

  4. 打开桌面镶边并在地址栏中输入以下内容: chrome://inspect/#devices

在那里你可以找到你设置的:像这样:

  1. 点击“inspect”,就会出现一个新的调试窗口!

【讨论】:

    猜你喜欢
    • 2020-12-27
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多