【发布时间】:2021-02-08 15:26:58
【问题描述】:
我创建了一个包装器来调用带有无状态小部件的 init():
class StatefulWrapper extends StatefulWidget {
StatefulWrapper({this.child, this.init});
final Widget child;
final void Function() init;
@override
_StatefulWrapperState createState() => _StatefulWrapperState();
}
class _StatefulWrapperState extends State<StatefulWrapper> {
@override
void initState() {
if (widget.init != null) widget.init();
super.initState();
}
@override
Widget build(BuildContext context) => widget.child ?? SizedBox();
}
下面是一个简单的使用示例:
class SomeView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StatefulWrapper(
init: () => print('---------- step 1'),
child: Scaffold(
body: generateWidget(),
),
);
}
}
Widget generateWidget() {
print('---------- step 2');
return Container(width: 50, height: 50);
}
输出:
I/flutter ( 2810): ---------- step 2
I/flutter ( 2810): ---------- step 1
为什么 step2 在 step1 之前打印?
Flutter 1.22.2 稳定版
【问题讨论】: