颤动中的计数器和通话时长组合

Counter and call duration combination in flutter

int score = 0;
score += 1;

我想在通话时长达到30秒时给score加1(+= 1),当通话时长小于30秒时将分数重置为0。

Text('$score')

然后这样显示

import 'package:permission_handler/permission_handler.dart';
import 'package:call_log/call_log.dart';
import 'package:flutter_phone_direct_caller/flutter_phone_direct_caller.dart';

我导入了以上3个包

void callLogs() async {
  Iterable<CallLogEntry> entries = await CallLog.get();
  for (var item in entries) {
    print(Duration());   <--- Use Duration & if statement to solve but duration not printing
   }
 }

而且我上面写的代码甚至没有像我想象的那样工作。我可以进行哪些更改才能使 score 正常工作?请帮助并提前致谢

您的代码等待此调用完成,因此它永远不会在其下运行任何东西:

Iterable<CallLogEntry> entries = await CallLog.get();

您可以使用 StopWatch 对象来获取时间:

void callLogs() async {

    Stopwatch stopwatch = new Stopwatch()..start();

    Iterable<CallLogEntry> entries = await CallLog.get();
    for (var item in entries) {
        var duration = stopwatch.elapsed;
        print('Duration $duration');
   }
 }

并使用 setState() 设置分数:

setState(() { duration > 30 ? score += 1 : score = 0 });

如果你的变量分数在小部件内部或构建方法中,那么我认为它会在你任何时候将它设置为开始值 运行 setState 因为 setState 会再次构建构建以及小部件在构建中。

如果是这样,则尝试将变量设置为全局变量。

PS: global 意味着你的变量在你的 class.

之外