【发布时间】:2020-09-17 17:15:58
【问题描述】:
我有一个父小部件“BookmarkedShows”和子小部件“ListOfShows”。从子小部件中,当用户点击列表项时,它会打开详细信息页面。当用户从详细信息页面的书签中删除节目时,按下后退按钮时,节目不会从列表页面中删除。即父级没有刷新。我正在使用 BlocBuilder。
在其他问题中提到了一些将 .then() 添加到 Navigator.push() 方法的选项。然而 Navigator.push() 发生在子组件中。在 Navigation.pop() 期间如何强制刷新父 BlocBuilder?
父“BookmarkedShows”:
class BookmarkedShows extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => BookmarkShowsBloc()..add(LoadBookmarkedShows()),
child: BlocBuilder<BookmarkShowsBloc, BookmarkedShowsState>(
builder: (BuildContext context, BookmarkedShowsState state) {
return ShowList("Bookmarked shows", state.shows)
}),
);
}
}
子“ListOfShows”:
class ListOfShows extends StatelessWidget {
final String listName;
final List<Show> shows;
const ListOfShows(this.listName, this.shows);
@override
Widget build(BuildContext context) {
return Wrap(children: shows.map((show) => showItem(show, context)).toList());
}
InkWell showItem(Show show, BuildContext context) {
return InkWell(
onTap: () async {
await Navigator.of(context).push(MaterialPageRoute(
builder: (context) => showDetails(show)));
},
child: Container(
CachedNetworkImage(
imageUrl: show.portraitPoster
),
));
}
}
【问题讨论】:
标签: flutter bloc flutter-navigation