如何在运行Hero动画之前等待从BLoC状态获取项目?

时间:2019-05-07 21:02:52

标签: flutter flutter-animation

我制作了一个应用,以了解有关Flutter,RxDart和BLoC模式的更多信息。我将从我的ListView到我的“详细信息”页面执行一个Hero动画。 我的问题是我的大部分详细信息页面都包裹在StreamBuilder中,因为我需要在显示项目信息(包括Hero动画所涉及的图像)之前先检索我的项目。 因此,无法触发Hero动画。

 return Scaffold(
        body: StreamBuilder(
      stream: eventBloc.eventDetails,
      builder: (context, snapshot) {
        Event event;
        if (snapshot.hasData) {
          event = snapshot.data;
          return Stack(
            children: <Widget>[
              Column(children: <Widget>[
                Expanded(
                    child: ListView(
                  shrinkWrap: true,
                  children: <Widget>[
                    _buildEventImage(context, event),
                    (event.description != null &&
                            event.description.trim().isNotEmpty)
                        ? _buildDescriptionSection(context, event)
                        : Container(),
                    event.hasLocation ? _buildLocationSection(context) : Container()
                  ],
                ))
              ]),
            ]);
          }
         return Container(child: LoadingIndicatorWidget(visible: true));

Widget _buildEventImage(BuildContext context, Event event) {
    //TODO: Fix Hero animation because of state
    return Hero(
      tag: 'eventImg${event.id}',
      child: Container(
          decoration: BoxDecoration(
            image: DecorationImage(
                image: eventImageProvider(event.image),
                alignment: Alignment.topCenter,
                fit: BoxFit.cover),
          ),
     );
}

0 个答案:

没有答案