Flutter - 如何用 Bloc 重建 Widget?

Flutter - How to rebuild Widget with Bloc?

我是 Flutter 中的 Bloc 模式的新手,我想在这里理解这段代码,我有一个小部件:

Widget forumList() {
    return BlocProvider<ForumBloc>(
      create: (context) => ForumBloc(ForumService())..add(GetAllForumPosts()),
      child: BlocBuilder<ForumBloc, ForumState>(
        builder: (context, state) {
          if (state is ForumLoading) {
            return Text('Loading');
          }
          if (state is ForumLoaded) {
            var posts = state.forumPosts;
            return ListView.separated(
              shrinkWrap: true,
              physics: NeverScrollableScrollPhysics(),
              padding: const EdgeInsets.symmetric(vertical: 8),
              itemCount: posts.length,
              itemBuilder: (context, index) {
                var post = posts[index];
                return ForumPostCard(
                  forumModel: post,
                  onPressed: () {
                    Navigator.pushNamed(context, Routes.forumDetails,
                        arguments: {'post': post});
                  },
                );
              },
              separatorBuilder: (context, index) => SizedBox(height: 5),
            );
          }
          return SizedBox();
        },
      ),
    );
  }

现在如何在单击按钮后重建此小部件?

如果您只需要重建屏幕,调用 setState() 应该会触发重建。

另一方面,

BlocBuilder 在状态更改时重建。如果您想在您的集团中观察到状态变化,调用 context.read<ForumBloc>().doSomething() 应该更新 BlocBuilder.

内的小部件

使用 BlocListener 是您可以使用的另一种方法。