首页 > 解决方案 > 基于 AppLifeCycleState 渲染小部件,查看正在运行的应用列表时隐藏页面

问题描述

我有以下代码,当应用程序进入非活动或暂停状态时,它将用容器替换子项。

这在 IOS 中不起作用,在 Android 中也不一致

class SecureScreen extends StatefulWidget {
final Widget child;
SecureScreen({@required this.child});

@override
 SecureScreenState createState() => SecureScreenState();
}

class SecureScreenState extends State<SecureScreen>
with WidgetsBindingObserver {
AppLifecycleState _notification;

@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}

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

@override
void didChangeAppLifecycleState(AppLifecycleState state) {
print(state.toString());
setState(() {
  _notification = state;
});
}

@override
Widget build(BuildContext context) {

return (_notification == AppLifecycleState.paused ||
        _notification == AppLifecycleState.inactive)
    ? Container(
        color: Colors.greenAccent,
      )
    : widget.child; 
  }


}

这是解决问题的最佳方法吗?如果是,我必须改变什么才能完成这项工作。如果不是,请提出替代解决方案。

提前致谢

标签: flutterdartflutter-layout

解决方案


推荐阅读