【问题标题】:Flutter - How to rebuild Widget with Bloc?Flutter - 如何使用 Bloc 重建 Widget?
【发布时间】:2021-08-28 01:27:38
【问题描述】:

我是 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();
        },
      ),
    );
  }

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

【问题讨论】:

    标签: flutter dart bloc flutter-bloc


    【解决方案1】:

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

    BlocBuilder 另一方面会根据状态变化进行重建。如果您想在您的集团中观察到状态变化,调用类似context.read&lt;ForumBloc&gt;().doSomething() 的东西应该会更新BlocBuilder 中的小部件。

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

    【讨论】:

      猜你喜欢
      • 2021-04-23
      • 2021-01-29
      • 2019-06-12
      • 2020-03-23
      • 2020-06-17
      • 2021-08-08
      • 2019-06-28
      • 2021-06-17
      • 2019-12-26
      相关资源
      最近更新 更多