代码之家  ›  专栏  ›  技术社区  ›  Spicy Pumpkin

有没有办法省略StopWatchWidget计时器的最后一位数字?

  •  1
  • Spicy Pumpkin  · 技术社区  · 1 年前

    我有一个 StopWatchWidget 在我的应用程序中,我用它来创建自己的计时器。它向上计数,包括分钟、秒和毫秒。问题是毫秒占用3位数字,而我希望它们只占用2位数字。我怎么能省略最后一个数字?如果有助于传达我的观点,我附上了一张图片: As you can see, the milliseconds take up 3 digits. The digit I would like to omit entirely is crossed out in red.

    这是我的代码:

    class StopWatchWidgetState extends State<StopWatchWidget> {
      late Color timercolor = Colors.white;
      final Stopwatch _stopwatch = Stopwatch();
      String stopWatchText = '0.00.00';
      void startStopWatch() {
        if (_stopwatch.isRunning) {
          stopWatchText = "0.00.00";
          _stopwatch.stop();
        } else {
          stopWatchText = '0.00.00';
          _stopwatch
            ..reset()
            ..start();
        }
    
        Timer.periodic(const Duration(milliseconds: 1), (timer) {
          setState(() {
            if (!_stopwatch.isRunning) {
              timer.cancel();
            }
            stopWatchText =
                '${(_stopwatch.elapsed.inMinutes % 60).toString().padLeft(2, '')}.${(_stopwatch.elapsed.inSeconds % 60).toString().padLeft(2, '0')}.${(_stopwatch.elapsed.inMilliseconds % 1000).toString().padLeft(2, '0')}';
    
    1 回复  |  直到 1 年前
        1
  •  1
  •   Leaderfrank    1 年前

    试试这个方法

    stopWatchText =
        '${(_stopwatch.elapsed.inMinutes % 60).toString().padLeft(2, '')}.${(_stopwatch.elapsed.inSeconds % 60).toString().padLeft(2, '0')}.${(_stopwatch.elapsed.inMilliseconds % 1000 ~/ 100).toString().padLeft(2, '0')}';