Flutter:如果设备处于锁定屏幕,则AppLifecycleState不起作用

时间:2019-12-27 07:11:51

标签: flutter dart

我使用 AppLifeycleState 来检测用户使用我的应用程序时的行为。为了检测我的应用未被使用,我使用了

  • AppLifecycleState.paused
  • AppLifecycleState.inActive
  • AppLifecycleState.detached

因为我想检测我的应用程序是否未使用1秒钟,所以我将用户扔到了确认指纹(如Whatsapp)上。一切都很好,如果用户再次按下最近使用的应用程序,“主页”按钮,我可以检测到我的应用程序是否未被使用,如果用户再次回来,则将用户置于确认指纹中。

但是问题是,当设备屏幕锁定并再次打开时,用户没有扔到确认指纹上。

我当然可以在控制台中看到我的应用程序是 AppLifecycleState.paused AppLifecycleState.inActive ,但是奇怪的是,如果我在其中重新加载ctrl +s我的IDE我的应用程序使我进入了确认指纹。

为什么会这样?

工作1

Applifecycle Work 1

工作2

Applifeycle Work 2

不起作用!

enter image description here

  

已经在真实设备(Redmi Note 4)中进行了测试,但仍然无法正常工作。

源代码AppLifecycleState

@override
  void didChangeAppLifecycleState(AppLifecycleState state) async {
    setState(() => _appLifecycleState = state);
    if (widget.userBox == null) {
      print('Box User Null');
      return;
    } else {
      if (widget.userModelHive.fingerPrint || widget.userModelHive.pinCode) {
        if (_appLifecycleState != AppLifecycleState.resumed) {
          //? Berarti Lifecylenya InActive , Paused , Detached , Maka Simpan Waktu Keluarnya
          final actionBox = await repository.changeDateExit(
            userModelHive: UserModelHive()
              ..id = widget.userModelHive.id
              ..giverName = widget.userModelHive.giverName
              ..pinCode = widget.userModelHive.pinCode
              ..fingerPrint = widget.userModelHive.fingerPrint
              ..darkMode = widget.userModelHive.darkMode
              ..tokenExpiry = true
              ..durationToken = widget.userModelHive.durationToken
              ..dateExit = DateTime.now()
                  .add(Duration(seconds: widget.userModelHive.durationToken)),
          );
          print(state);
          return actionBox;
        } else {
          print('Resumed Lifecycle');
        }
      }
    }
    if (mounted) {
      setState(() {});
    }
    super.didChangeAppLifecycleState(state);
  }

0 个答案:

没有答案