在调试器中暂停flutter应用程序,并在Intellij中等待TAP



我正在尝试通过暂停,敲击按钮并期望调试器将我带到按钮onPressed事件处理程序来调试Android模拟器中的扑面应用程序逐步浏览代码。

当我点击按钮时,什么也不会发生,调试器不会从暂停到运行。但是,如果我在点击按钮后恢复应用程序,则立即调用onPressed事件处理程序,因此显然,在暂停应用程序时,模拟器拾取了TAP。

如何以这种方式调试我的应用程序,而不是手动查找正确的.dart文件和正确的按钮并插入断点?

不幸的是,您不能完全做到这一点。暂停应用程序可防止事件循环执行,并且未调用您的按钮处理程序。使其在任何代码中暂停需要一个新功能,在该功能中,Intellij可以在您的代码和框架代码中区分您的代码,并在任何代码的任何调用中停止(即使这样,它也应忽略您的build()功能(。我在Intellij中可以找到的最接近的是Java方法断点,这与DART无法使用。

但是,这是您可以做的一件事:您可以在onPressed的呼叫者中设置一个断点,这将在任何按钮上暂停您的应用程序。您可以在这里放置断点:

// This is Line 504 of flutter/lib/src/material/ink_well.dart
// Ctrl+click on button to go into the framework code 
// and find this file in project explorer
  void _handleTap(BuildContext context) {
    _currentSplash?.confirm();
    _currentSplash = null;
    updateHighlight(false);
    if (widget.onTap != null) {
      if (widget.enableFeedback)
        Feedback.forTap(context);
      widget.onTap(); // <---PLACE BREAKPOINT HERE
    }
  }

碰到此断点后,单击(F7(几次,您应该进入onPressed

最新更新