[英]How to find out in Flutter when a Widget appears / disappears?
当整个小部件出现在屏幕上或消失时,我想在有状态小部件中找到,类似于 iOS onViewWillAppear /消失。 这有可能吗? 我没有在 Flutter 文档中找到任何相关内容。
谢谢!
如果您想在小部件构建后执行某些操作,您应该使用以下代码:
void initState() {
super.initState();
if (SchedulerBinding.instance.schedulerPhase ==
SchedulerPhase.persistentCallbacks) {
SchedulerBinding.instance.addPostFrameCallback((_) => onWidgetBuild());
}
/// appear
void onWidgetBuild() {
/// This block will be called onWidgetBuild
/// do your code here
}
/// disappear
@override
void dispose() {
super.dispose();
/// release whatever you have consume
}
希望这会帮助你。
你要找的是flutter_widgets
包
将以下内容添加到您的pubspec.yaml
flutter_widgets: ^0.1.7+1
这个包里面有一个叫做VisibilityDetector
的小部件,它需要一个key
、一个child
和一个onVisibilityChanged
函数
return VisibilityDetector(
key: Key("1"),
onVisibilityChanged: (visibility) {
//This will give you a range of values between 0 and 1,
//0 being not visible and 1 being fully visible.
print(visibility.visibleFraction)
}
child: Container(
width:double.infinity,
height: 300,
),
),
我使用focus_detector package很幸运。 FocusDetector
小部件将需要放置在默认的build()
function 中,并且您现有的 UI 代码使其成为子部件:
@override
Widget build(BuildContext context) =>
FocusDetector(
onFocusLost: () {
},
onFocusGained: () {
},
onVisibilityLost: () {
},
onVisibilityGained: () {
},
onForegroundLost: () {
},
onForegroundGained: () {
},
// Your previous build code replaces the Container() below
child: Container(),
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.