Flutter-每次页面更改时运行一个函数

时间:2019-08-01 10:33:18

标签: events flutter broadcasting

我希望每次 val l1: List[Either[String, Int]] = List(Right(1), Right(2), Left("error"), Right(4)) val (_, rights) = l1.partitionMap(identity) println(rights) // Displays // List(1, 2, 4) 中的页面更改时都运行一个函数。

理想情况下,我不想在每个页面的Flutter application中调用此函数,因为有时人们会忘记将调用添加到新页面中。

将其视为initState-基本上是在页面加载等之前,需要运行一些代码。

更新的代码以供审核

middleware

2 个答案:

答案 0 :(得分:2)

您可以使用实现方法didChangeDependencies此函数在initState之后调用,

flutter doc:

  

子类很少重写此方法,因为框架总是在依赖项更改后调用build。一些子类确实重写了此方法,因为当它们的依赖项发生变化时,它们需要做一些昂贵的工作(例如,网络获取),并且对于每个构建而言,所做的工作都太昂贵了。

Link

    @override
    void didChangeDependencies() {
      super.didChangeDependencies();
      // set your stuff here 
      }

答案 1 :(得分:1)

您可以使用继承

abstract class MyState<T extends StatefulWidget> extends State {
  @override
  void initState() {
    super.initState();
    //YOUR CHANGE PAGE METHOD HERE
  }
}

class YellowBird extends StatefulWidget {
  const YellowBird({ Key key }) : super(key: key);

  @override
  _YellowBirdState createState() => _YellowBirdState();
}

class _YellowBirdState extends MyState<YellowBird> {
  @override
  Widget build(BuildContext context) {
    return Container(color: const Color(0xFFFFE306));
  }
}