查找已停用小部件的祖先是不安全的,Flutter 错误
查找已停用小部件的祖先是不安全的,Flutter 错误
我有一个覆盖小部件,我将在另一个屏幕上显示。它通过调用加载器类中的一个函数来激活,该函数设置覆盖小部件的可见性。但是当我点击该覆盖小部件时,我收到以下消息:
"在最终化小部件树时抛出了以下断言:
查找停用小部件的祖先是不安全的。
此时,小部件的元素树状态不再稳定。
要在dispose()方法中安全地引用小部件的祖先,请通过在小部件的didChangeDependencies()方法中调用dependOnInheritedWidgetOfExactType()来保存对祖先的引用"
我知道上下文有问题,但我无法找出原因。有人可以帮帮我吗?
import 'package:animated_widgets/animated_widgets.dart';
import 'package:flutter/material.dart';
import 'package:photo_view/photo_view.dart';
import 'loader.dart';
class OverlayImage extends StatelessWidget {
const OverlayImage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return ValueListenableBuilder
valueListenable: Loader.appLoader.loaderShowingNotifier,
builder: (context, value, child) {
if (value) {
return OpacityAnimatedWidget(
curve: Curves.linear,
duration: const Duration(milliseconds: 250),
enabled: value,
child: GestureDetector(
onTap: () => Loader.appLoader.hideLoader(),
child: yourOverLayWidget()),
);
} else {
return Container();
}
},
);
}
Widget yourOverLayWidget() {
return Stack(
children:
Positioned.fill(
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 8, sigmaY: 8),
child: Container(
color: Colors.black.withOpacity(0.5),
),
),
),
Center(
child: ValueListenableBuilder
builder: (context, value, child) {
return PhotoView(
backgroundDecoration:
BoxDecoration(color: Colors.black.withOpacity(0.4)),
imageProvider: NetworkImage(value),
minScale: PhotoViewComputedScale.contained * 0.85,
maxScale: PhotoViewComputedScale.covered * 2,
);
},
valueListenable: Loader.appLoader.loaderImageURLNotifier,
),
),
],
);
}
}