4

使用DartPad,如何在不丢失所有代码的情况下停止当前程序?

事实上,似乎只有:

  • 一个运行按钮
  • 一个 RESET 按钮(它会擦除你的代码)

答案不是:

  • “让它继续运行,然后再次单击运行,”

(因为显然它不会首先停止当前代码,实际上是并行开始后续运行!***)

  • “只需重新加载浏览器选项卡”

(因为如果你需要读取快速变化的控制台输出怎么办?——那会消失的)

*** 您可以使用以下代码验证此行为:

import 'dart:async';

void main() {
  
  int iter = 0;
  
  Timer myTimer = Timer.periodic(Duration(milliseconds: 10), (timer) {
    iter++;
   
    int temp = iter %1000;
    
    print("iter = $iter");
    print("iter %1000 = $temp");
  });

}
4

3 回答 3

2

目前还没有办法停止 DartPad 中的程序。以下是 GitHub 上的一些相关问题:

https://github.com/dart-lang/dart-pad/issues/668

https://github.com/dart-lang/dart-pad/issues/704

于 2021-12-19T14:12:38.947 回答
1

由于 DartPad 可以运行 Flutter 应用程序,因此您可以制作自己的停止按钮。

在此处输入图像描述

在 DartPad 中运行代码示例。

import 'package:flutter/material.dart';
import 'dart:async';

void main() {
  runApp(MyApp());
  runDart();
}

Timer? myTimer;

void runDart() {
  int iter = 0;
  myTimer = Timer.periodic(const Duration(milliseconds: 10), (timer) {
    iter++;
    int temp = iter %1000;
    print("iter = $iter");
    print("iter %1000 = $temp");
  });
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Center(
        child: ElevatedButton(
          child: const Text('Stop'),
          onPressed: () {
            myTimer?.cancel();
          },
        ),
      ),
    );
  }
}
于 2021-12-20T05:16:11.700 回答
-1

Dartpad 目前不提供此功能,实现所需功能的唯一方法是关闭浏览器上的 Dartpad 选项卡,然后重新打开并继续。在 dart 上编写时,只要您连接到互联网,您的代码就会被缓存并因此保存,因此当您关闭浏览器并打开它时,您可以从上次中断的地方继续。如果您在某个时候无法访问互联网,您所做的任何更改都不会保存,并且当您在浏览器中关闭该选项卡时可能会丢失。

如您所知,该RUN按钮运行您的代码;该REST按钮撤消自上次打开 Dartpad 以来对 Dartpad 所做的任何更改

于 2021-12-20T05:20:59.633 回答