首页 > 解决方案 > Flutter Bloc:状态转换

问题描述

我的集团面临一个问题。在应用程序中,用户可以按多个值进行过滤。当我使用时filter,转换正确完成,但是当我使用时filter2,什么都没有发生,并且状态没有重建BlocBuilder。我错过了什么吗?这两种方法(一种有效,另一种无效)有什么区别?

示例方法:

Stream<EventFilteredState> _mapUpdateFilterToState(
    UpdateFilter event,
  ) async* {
    if (eventsBloc.state is EventsLoaded) {
      final events = (eventsBloc.state as EventsLoaded).events;

      final filter = [event.faculty]..addAll((state as FilteredEventsLoaded).faculties);
      final filter2 = (state as FilteredEventsLoaded).faculties..add(event.faculty);

      yield FilteredEventsLoaded(events, filter);
    }
  }

标签: flutterblocflutter-bloc

解决方案


我忘记了我读到它的地方,所以我无法解释这个问题,但我可以命名它:不同之处在于你在filter. 在filter2您只编辑您的状态的数组。因此,有时比较无法正常工作。在您生成编辑后的数组后,该州认为它是同一个数组。

编辑:我刚刚意识到你的两个过滤器做同样的事情。所以我删除了我的其余答案。

编辑 2:您可以在此处阅读有关列表比较的更多信息,fe:如何比较 Dart 中的列表是否相等?只需谷歌“颤振数组比较”。


推荐阅读