【问题标题】:How to STOP a program in DartPad?如何停止 DartPad 中的程序?
【发布时间】:2022-01-11 07:18:51
【问题描述】:

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

事实上,似乎只有:

  • 一个运行按钮
  • RESET 按钮(擦除您的代码)

答案不是:

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

(因为显然它并没有先停止当前代码,而是开始并行运行后续的代码!***)

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

(因为如果您需要读取快速变化的控制台输出怎么办?--那将不复存在)

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

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");
  });

}

【问题讨论】:

    标签: dart asynchronous playgrounds dartpad


    【解决方案1】:

    无法停止 DartPad 中的程序。以下是 GitHub 上的一些相关问题:

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

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

    【讨论】:

      【解决方案2】:

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

      Run code sample in 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();
                },
              ),
            ),
          );
        }
      }
      

      【讨论】:

      • 这是一个天才而有用的答案!
      • 是否有类似 exit() 或 finish() 的命令实际上会完全结束执行?
      • @NerdyBunz 我不确定。
      • @NerdyBunz 是的,有一个 exit() 命令,但它需要导入 dartpad 不支持的 dart:io 包。然而。如果您想了解更多信息,请查看exit()的描述
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-08
        • 1970-01-01
        • 1970-01-01
        • 2014-02-24
        相关资源
        最近更新 更多