flutter - 如何在 Flutter 应用程序处于非活动状态时对其进行模糊处理
解决方案
我一直在寻找做同样的事情,这是我实施的解决方案。
我使用 Overlay 小部件添加模糊效果,并使用 AppLifecycleState 来显示或不显示。看看下面的代码片段。(感谢这篇文章的背景模糊效果代码片段)
你可以在这里找到工作演示
MaterialApp(
...,
builder: (BuildContext builderContext, Widget? child) => Overlay(
initialEntries: <OverlayEntry>[
OverlayEntry(
builder: (BuildContext context) => AppLifecycleOverlay(),
)
],
),
)
class AppLifecycleOverlay extends StatefulWidget {
const AppLifecycleOverlay({Key? key}) : super(key: key);
@override
State<AppLifecycleOverlay> createState() => _AppLifecycleOverlayState();
}
class _AppLifecycleOverlayState extends State<AppLifecycleOverlay>
with WidgetsBindingObserver {
bool shouldBlur = false;
@override
void initState() {
super.initState();
WidgetsBinding.instance?.addObserver(this);
}
@override
void dispose() {
WidgetsBinding.instance?.removeObserver(this);
super.dispose();
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
setState(() {
shouldBlur = state == AppLifecycleState.inactive ||
state == AppLifecycleState.paused;
});
}
@override
Widget build(BuildContext context) {
if (shouldBlur) {
return BackdropFilter(
filter: ImageFilter.blur(sigmaX: 8, sigmaY: 8),
child: Container(
height: MediaQuery.of(context).size.height,
width: MediaQuery.of(context).size.width,
color: Colors.grey.shade200.withOpacity(0.5),
),
);
}
return Container();
}
}
推荐阅读
- json - Logstash 6.2.3 将 json 值转换为 GeoPoint 问题
- fortran - 填充 Fortran 二维数组
- dart - Flutter:Firestore 助手不返回任何内容
- python - Python Pandas - 将日期转换为遵循 4-4-5 日历的财政年度
- r - 如果一年中的观察总数不足,则用 NA 替换观察结果
- python - 读入一个 JSON 文件
- sql - 在postgresql中将日期转换为特定格式
- scala - 从 S3 存储桶上传/下载数据
- html - 何时何地使用 aria-label?
- appium - 如何在 MAC 中更新 WebDriverAgent (WDA)?