Flutter OpenContainer动画行为

时间:2020-07-19 23:53:17

标签: flutter

我正在用卡片做一个简单的开放式容器。

我看到被打开的小部件的构造函数被多次调用。

这是正常行为吗?我打算通过从后端获取数据来进行一些繁重的初始化,但是如果动画被设计为一次又一次地创建对象,则不想在构造函数中进行初始化。

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');
  }

1 个答案:

答案 0 :(得分:0)

使用有状态的小部件,并在完成setState调用后调用异步函数进行初始化 (这个答案被错误地发布了,我试图发表评论,现在让它看起来像一个答案)