如果启动程序嵌套在内部,如何在vscode中调试flutter应用程序?

时间:2019-03-15 10:25:09

标签: visual-studio-code flutter

简短的问题

我正在尝试使用vscode调试flutter应用程序,但收到以下警告,由于此问题结尾给出的错误,调试停止。显然无法找到我的飞镖SDK。但是我已经在设置中提供了sdk路径。

mobile_app/lib/main.dart:1: Warning: Interpreting this as package URI, 'package:mobile_app/main.dart'.

medium post中提到了问题,但没有解决方案。您可能需要翻译页面才能阅读。


更多线索

  • 仅当我的主程序嵌套了两个以上级别时才会发生这种情况。我有一个深度嵌套的文件夹结构(如下所示)。 main.dart文件位于foo/code/ui/mobile_app/lib中,而.vscode/launch.json位于foo中。我在launch.json中为vscode提供了此路径。如果我将.vscode/launch.json放在ui中,然后在vscode中打开文件夹ui,或者将其放在mobile_app下,则效果很好。
  • 这仅在vscode中发生。 (我尝试过的另一个IDE是Android Studio)


我的文件夹结构

- foo
  - .vscode
    # launch.json
  - code
    + domain (this is a dart lib (shared code))
    - ui
      - mobile_app
        - lib
          # main.dart
      + web_app
  + design


launch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Jamsalon Mobile App",
            "program": "code/ui/mobile_app/lib/main.dart",
            "request": "launch",
            "type": "dart"
        }
    ]
}


完全错误

mobile_app/lib/main.dart:1: Warning: Interpreting this as package URI, 'package:mobile_app/main.dart'.

file:///C:/Users/random_user/Documents/app_development/frameworks/flutter/packages/flutter/lib/src/material/animated_icons.dart:9:8: Error: Not found: 'dart:ui'
import 'dart:ui' as ui show Paint, Path, Canvas;
       ^
file:///C:/Users/random_user/Documents/app_development/frameworks/flutter/packages/flutter/lib/src/material/animated_icons.dart:10:8: Error: Not found: 'dart:ui'
import 'dart:ui' show lerpDouble;
       ^
file:///C:/Users/random_user/Documents/app_development/frameworks/flutter/packages/flutter/lib/src/material/app.dart:5:8: Error: Not found: 'dart:ui'
import 'dart:ui' as ui;
       ^
file:///C:/Users/random_user/Documents/app_development/frameworks/flutter/packages/flutter/lib/src/material/app_bar_theme.dart:5:8: Error: Not found: 'dart:ui'
import 'dart:ui' show lerpDouble;
       ^
file:///C:/Users/random_user/Documents/app_development/frameworks/flutter/packages/flutter/lib/src/material/arc.dart:6:8: Error: Not found: 'dart:ui'
import 'dart:ui' show lerpDouble;
       ^
file:///C:/Users/random_user/Documents/app_development/frameworks/flutter/packages/flutter/lib/src/material/bottom_app_bar_theme.dart:5:8: Error: Not found: 'dart:ui'

1 个答案:

答案 0 :(得分:1)

这些错误是因为未将您的项目检测为Flutter项目(由于深度嵌套)。当Dart项目打开时,插件必须决定是进入“ Flutter模式”并寻找Flutter SDK(并调用​​flutter命令)还是“ Dart模式”(寻找标准Dart SDK并使用dartpub命令)。

出于性能原因,在做出此决定时,它仅扫描文件夹的前两个级别。如果您的Flutter项目嵌套了多个关卡,则会进入“飞镖模式”。

我的建议是使用VS Code的多根工作区功能,以便Flutter项目可以进一步使用(或作为工作区文件夹)。例如,如果单击文件->将文件夹添加到工作区,然后浏览到您的mobile_app文件夹,则应该可以解决该问题。不幸的是,由于https://github.com/Microsoft/vscode/issues/45470(请在其中添加一个!),这种体验并不像我希望的那样好(您现在会在资源管理器树的顶层看到mobile_app重复)。