我制作了一个应用,以了解有关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),
),
);
}