如何从 if 语句中获取值并计算出差异

How can I get a value from an if statement and work out the difference

我有一个功能可以检查用户是否打开或关闭了应用程序。如果打开,获取当前时间并将其存储在变量中,如果应用程序关闭,则执行相同的操作。然后它应该计算出差异并将其打印回来。

我正在尝试计算用户在该应用上花费了多长时间。

我只是不确定如何让它工作,我尝试将它分配给一个全局变量并从那里使用它,但是那没有用,我尝试将值发送到另一个函数,但我保留了返回 null。

我该怎么做才能解决这个问题?

*.dart

activeTimer(value) {
    print(value);

    if (value == true) {
      startTimer();
      print("TRUE 1");
      DateTime dateTimeStart = DateTime.now();
    } else {
      print("FALSE 1");
      stopTimer();
      DateTime dateTimeEnd = DateTime.now();
    };

  final differenceInDays = dateTimeEnd.difference(dateTimeStart).inMinutes;
    print(differenceInDays);

  }

我强烈建议您为此目的使用 Stream。 例如:

Stream<int> tick({required int ticks}) {
return Stream.periodic(Duration(seconds: 1), (x) => ticks + x + 1)
    .take(ticks);

}

这与您在此 Bloc 教程中找到的非常相似 - link

您可以检查您的应用程序何时关闭(或置于后台),因此只需在应用程序启动时初始化一个变量并计算应用程序关闭的时间:

在您的 main.dart 文件中

late DateTime app_start;
@override
  initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);

    app_start = DateTime.now();
  }

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);

    super.dispose();
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    super.didChangeAppLifecycleState(state);
    // check if app is closed -> substract current time from app_start
    // save to local storage or send to cloud or smth
  }