这个问题的重点是如何处理状态变化,最好由原始祖先自动处理。在我看来,不可能用StatefulWidget作为祖先将这些类扩展到第一个孩子之外(示例1)?
在我看来,唯一的方法是使用mixins。但是,这样做的缺点是,您必须手动管理状态更改(示例2)。
我在俯视什么吗?
//示例1-不起作用,因为BarState不能从Bar继承
class Foo extends StatefulWidget {
final String stringFoo;
Foo({Key key, this.stringFoo}) : super(key: key);
@override
FooState createState() => new FooState();
}
class FooState extends State<Foo> {
bool updating = false;
Future<void> _update() async {
// await something(stringFoo)
setState(() {
updating = false;
});
}
void update() {
setState(() {
updating = true;
});
_update();
}
// Dummy build, always override
@override
Widget build(BuildContext context) {
return null;
}
@override
void initState() {
super.initState();
update();
}
} …Run Code Online (Sandbox Code Playgroud)