Как дождаться загрузки предмета из состояния BLoC перед запуском анимации героя? - PullRequest
0 голосов
/ 08 мая 2019

Я создаю приложение, чтобы узнать больше о шаблонах Flutter, RxDart и BLoC. Я хотел бы выполнить Hero анимацию из моего ListView на мою страницу сведений. Моя проблема в том, что большая часть моей страницы сведений обернута в StreamBuilder, потому что мне нужно извлечь свой элемент, прежде чем показывать его информацию, включая изображение, связанное с анимацией 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),
          ),
     );
}
...