flutter - 动画切换器和 Bloc Builder

标签 flutter bloc

我是 Flutter 中的 bloc 模式的新手。

我的一个状态类有一个小部件列表和一个作为字段的索引。我的目标是使用此状态的小部件更新 Animated Switcher 的子级。

return AnimatedSwitcher(
  duration: Duration(milliseconds: 500),
  child: BlocBuilder<WelcomeBloc, WelcomeBlocState>(
    builder: (context, state) {

      if(state is MyState)
        return state.widgetList[state.index];

      else return Container();

    },
  ),
);

我也尝试过相反的方法,在 bloc builder 中返回动画切换器,结果是一样的

当调用 yield 时,小部件被更改但没有任何动画。

我错过了什么?

最佳答案

AnimatedSwitcher 的子部件必须改变:

return BlocBuilder<WelcomeBloc, WelcomeBlocState>(
  builder: (context, state) {
    return AnimatedSwitcher(
      duration: Duration(milliseconds: 500),
      child: state is MyState ? state.widgetList[state.index] : Container(key: Key('key2')),
    );
  },
);

并且不要忘记为子小部件设置不同的键。

关于flutter - 动画切换器和 Bloc Builder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58749732/

相关文章:

flutter - 如何为 Text 或 RichText 设置最大行数?

Flutter 黑色渐变不平滑

flutter - 在一个小部件子列表中多次使用全局键

dart - Bloc 模式不会在屏幕上显示新添加到 sqflite 的用户

image - CachedNetworkImage 仅显示占位符并且不会在 Flutter 聊天应用程序中加载图像

firebase - 根据 flutter 中数组列表中的值获取 firestore 集合

Flutter 错误 - 未为类型 'Future' 定义该方法 - flutter sqflite 数据库错误

flutter - 我们什么时候应该使用 freeze 作为密封类或构造函数?

flutter - 如何在上下文之间共享 bloc

dart - 如何在 BLOC 的 Flutter 的 BottomNavigationBar 中设置 currentIndex?