flutter 如何检查widget/页面是否已呈现?

hyrbngr7  于 2023-01-18  发布在  Flutter
关注(0)|答案(2)|浏览(1196)

RN中有类似componentWillDisapear()的东西吗?
我的问题的详细信息:
我有两个屏幕:主页和详细信息。我的应用程序使用'firebase_admob'的广告和'firebase_admob'(见下面的截图)可以只呈现整个应用程序的固定横幅。所以当你去其他屏幕你也看到它,但我只需要它在主屏幕。这意味着,当用户导航到详细信息我必须隐藏它。如何做到这一点?
注:我想在用户离开主屏幕时调用dispose()。要呈现横幅,您需要在BannerAd类中调用show(),而当您需要隐藏横幅时,只需调用dispose。

hfsqlsce

hfsqlsce1#

下面的代码允许检查页面是否对用户可见:

import 'package:flutter/material.dart';

class TestWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    print('TestWidget: ${ModalRoute.of(context).isCurrent}');
    return Container();
  }
}

这个sample允许检查路由何时改变。但是你不能得到当前页面名称。

8i9zcol2

8i9zcol22#

作为对Kostya Vyrodov回答的补充和对他评论“但是你不能得到当前页面名称”的回应,下面的代码片段将打印当前页面名称。

print("context.widget.toStringShort: ${context.widget.toStringShort()}");

通常,最好在页面的initState中使用此功能,将页面名称保存到全局变量中,以便在应用中的其他地方使用。例如,我在_firebaseMessaging.configure()方法中将其与Firebase Cloud Messaging一起使用,以确定特定的导航要求。如果有人认为此功能有用,请投赞成票。

相关问题