繁体   English   中英

如何在 Flutter 中找到某个 Widget 出现/消失的时间?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM