跳到主要内容

疑难杂症

BackdropFilter 的模糊效果与 ListTile 点击效果冲突问题

我对在 APP 中使用高斯模糊效果没有任何抵抗力,这次我将高斯模糊效果应用在 BottomSheet 上时,却出现了一个我很难接受的现象:

ListTile 的点击效果同样也被模糊掉了,这看起来真的很难受。网上搜也没找到具体原因,甚至和我有相同问题的人都没有。

不过在我将 ListTile 转为 Row 的一次尝试中,我在 InkWell 的外层添加了 Material 组件,结果就神奇的恢复了正常的点击效果,猜测有可能是 Material 组件限制了 InkWell 创建点击效果的范围。

GestureDetector 无法检测到透明区域的点击事件

解决方法很简单,修改GestureDetectorbehavior属性。

GestureDetector(
behavior: HitTestBehavior.translucent,
...
)

安卓连按两次返回键返回桌面

在 Flutter 中,如果要完成这个功能,需要用到 move_to_background 这个插件,目前我没有找到更好的方法或插件可用。

这个插件的更新时间距离现在已经有两年时间了,时过境迁,直接通过 gradle 8 打包,会报错:

Namespace not specified. Please specify a namespace in the module's build.gradle file like so:

android {
namespace 'com.example.namespace'
}

看这个意思是得加个命名空间的配置,但总不能加示例中的这个吧?

于是在 Android Studio 中,我通过这个方式找到了命名空间:

把它填进自己的 build.gradle 后还是报同样的错误,不过再仔细看这个错误给的建议,就会发现是要把这个命名空间的配置加到相应模块中的 build.gradle 中才行。

再次运行就打包成功了,不过还是有两个方法过时的警告。

/.pub-cache/hosted/pub.dev/move_to_background-1.0.2/android/src/main/java/com/sayegh/move_to_background/MoveToBackgroundPlugin.java:13: 警告: [deprecation] PluginRegistry中的Registrar已过时
import io.flutter.plugin.common.PluginRegistry.Registrar;
^
/.pub-cache/hosted/pub.dev/move_to_background-1.0.2/android/src/main/java/com/sayegh/move_to_background/MoveToBackgroundPlugin.java:24: 警告: [deprecation] PluginRegistry中的Registrar已过时
public static void registerWith(Registrar registrar) {
^
2 个警告

先勉强用着吧,以后真不能用了再读读这个插件的源码,自己手挫一个出来。