在 dart 中调试时如何访问未来值?

Nik*_*aab 7 dart visual-studio-code flutter vscode-debugger

请投票: https ://github.com/dart-lang/sdk/issues/40198

我想知道如何在 vs-code 中调试时获得未来的价值?现在我需要引入另一个临时变量来让调试器等待该语句。这就是我目前访问值的方式:

 Future<void> disconnect2() async {
    var conn = await isConnected;
    if (conn) await internalDisconnect();
  }
Run Code Online (Sandbox Code Playgroud)

但我想写下以下内容:

  Future<void> disconnect() async {
    if (await isConnected) await internalDisconnect();
  }
Run Code Online (Sandbox Code Playgroud)

并且仍然能够isConnected使用调试器访问 的值。

到目前为止我尝试过的:

尝试将表情添加(await isConnected)到手表中。 在此输入图像描述(await isConnected)尝试在调试控制台中 评估表达式。在此输入图像描述 尝试将表情添加isConnected到手表中。 在此输入图像描述isConnected尝试在调试控制台中 评估表达式。在此输入图像描述 尝试通过将鼠标悬停在实例上来访问该值。在屏幕截图中它是空的,但大多数时候我只能访问未来的对象。 在此输入图像描述

有没有什么简单的方法可以在调试时获取未来的价值?

isl*_*rov 0

在未等待和加载未来值时,您无法看到其值。原因是,Future 类型正在等待数据,因此它为未来值保留了部分内存。您必须从 REST API 获取值 fe 值后才能访问它。您可以使用then方法并查看那里的值。

someFuture(arg).then((erg) => print(erg));
Run Code Online (Sandbox Code Playgroud)

  • 是的,谢谢您的回答。我知道未来是什么,但是 VS Code 中必须有一种简单的方法可以在调试时获取值。例如,在 C# 中,如果您将“任务”(相当于 Dart 中的 Future)添加到手表中,它就会等待您。 (12认同)