我正在开发一种处理加密货币(钱包)的Flutter应用程序。有人要求该应用采取一些措施来隐藏自己的余额,等等。
但是,我不知道的一件事是从最近的应用程序菜单中隐藏信息(例如Android上的安全窗口模式,或者只是更改界面以使平衡不可见。)
我在主窗口小部件中添加了WidgetsBindingObserver
,并尝试了以下操作:
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
switch (state) {
case AppLifecycleState.paused:
setState(() {
_hideBalance = true;
});
super.didChangeAppLifecycleState(state);
break;
case AppLifecycleState.resumed:
setState(() {
_hideBalance = false;
});
super.didChangeAppLifecycleState(state);
break;
default:
super.didChangeAppLifecycleState(state);
break;
}
}
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
@override
Widget build(BuildContext context) {
return _hideBalance ? SizedBox() : Text("$12,234");
}
但是,这对最近的应用程序没有任何影响,这似乎是按下主屏幕按钮后的确切快照(至少在我的OnePlus 6T上)。例如。 -我仍然可以在最近的应用程序/应用程序切换器概述中看到余额。
有没有办法做到这一点?
答案 0 :(得分:1)
您是不是在说这个函数?如果是,则需要添加以下内容,
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
答案 1 :(得分:0)
您应该使用本机平台实现。 android中有一个称为窗口管理器的东西,您必须对其进行设置。
将此内容粘贴到MainActivity文件中,您应该会看到它起作用。
@Override
protected void onPause() {
super.onPause();
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
}
@Override
protected void onResume() {
super.onResume();
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
}