颤动中的计数器和通话时长组合
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.
之外
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.
之外