Flutter:如何检查窗口小部件/页面是否被渲染?

时间:2019-01-22 15:22:38

标签: flutter

RN中是否有类似componentWillDisapear()的东西?

我的问题的详细信息:

我有两个屏幕:“主页”和“详细信息”。我的应用程序使用“ firebase_admob”进行广告,而“ firebase_admob”(请参见下面的屏幕截图)只能为整个应用程序呈现固定的横幅。因此,当您转到其他屏幕时,您也可以看到它,但是我仅在主屏幕中需要它。这意味着,当用户导航到“详细信息”时,我必须将其隐藏。怎么做?

注意:当用户离开主屏幕时,我想致电dispose()。要渲染横幅,您需要在show()类中调用BannerAd,而当您需要隐藏时,只需调用dispose。

enter image description here

2 个答案:

答案 0 :(得分:1)

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

import 'package:flutter/material.dart';

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

sample允许检查何时更改了路线。但是您无法获取当前页面名称。

答案 1 :(得分:0)

作为Kostya Vyrodov回答的补充,并针对他的评论“但是您无法获得当前页面名称。”,以下代码段将打印当前页面名称。

removePropertiesFromRevenues(...props: string[]) {
  this.revenues = this.revenues.map(r => {
    const obj = {};
    for (let prop in r) { if (!props.includes(prop) { obj[prop] = r[prop]; } }
    return obj;
  });
}

通常,最好在页面的initState中使用它来将页面名称保存到全局变量中,以便在应用程序中的其他位置使用。例如,我将它与_firebaseMessaging.configure()方法中的Firebase Cloud Messaging一起使用,以确定特定的导航要求。 如果有人觉得这有用,请投票。