我希望每次 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
答案 0 :(得分:2)
您可以使用实现方法didChangeDependencies此函数在initState之后调用,
flutter doc:
子类很少重写此方法,因为框架总是在依赖项更改后调用build。一些子类确实重写了此方法,因为当它们的依赖项发生变化时,它们需要做一些昂贵的工作(例如,网络获取),并且对于每个构建而言,所做的工作都太昂贵了。
@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));
}
}