Я создаю приложение, чтобы узнать больше о шаблонах 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),
),
);
}