我正在用卡片做一个简单的开放式容器。
我看到被打开的小部件的构造函数被多次调用。
这是正常行为吗?我打算通过从后端获取数据来进行一些繁重的初始化,但是如果动画被设计为一次又一次地创建对象,则不想在构造函数中进行初始化。
Widget build(BuildContext context) {
return OpenContainer(
closedColor: Colors.transparent,
transitionDuration: Duration(seconds: 1),
closedBuilder: (BuildContext context, VoidCallback action) => Card(
child: Container(
padding: EdgeInsets.all(5),
color: Colors.black54,
child: InkWell(
splashColor: Colors.blue.withAlpha(30),
onTap: () => action(),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
session.sessionName,
style: textTheme.headline6,
),
Text('Week:' + session.week.toString()),
Text('Session:' + session.sessionDay.toString()),
],
),
),
),
),
openBuilder: (session.completed)
? (BuildContext c, VoidCallback action) =>
ReviewCompletedSession(session: session)
: (BuildContext c, VoidCallback action) =>
ManageSession(key: ValueKey(session.id), session: session),
tappable: false,
);
}
“管理”会话小部件构造函数现在很简单。
ManageSession({
Key key,
@required this.session,
}) : super(key: key) {
print('Constructor called');
}
答案 0 :(得分:0)
使用有状态的小部件,并在完成setState调用后调用异步函数进行初始化 (这个答案被错误地发布了,我试图发表评论,现在让它看起来像一个答案)