状态管理集团-问题显示图标

时间:2018-07-06 13:38:50

标签: dart flutter reactive-programming state-management react-state-management

我在使用Bloc时遇到问题,该功能可以正常工作,但是在显示/显示方面,正确的信息/图标不行。在它的正下方显示了问题以及我的小部件的“层次结构”,因为这可能是问题之一。

问题 :(使用整体,并且在应用程序显示上完全没有更改)这一切都是关于在扩展图块上的图标上点击添加/删除收藏夹,当我点击图标时,端工作正常,但图标的显示却没有,点击图标时,图标不会像预期的那样变化,如果我折叠图块并展开,他会向我显示所有列表中的状态变化,而不是仅显示一个“成员”,这就是我现在的小部件层次结构的状态(我使用setState在有状态小部件中创建的解决方案,这是我想避免的事情):


正如您将在链接上看到的那样,此链条有效,但主要目标不是使用setState使 favorites.dart 处于有状态,以前我在我的 favorites_bloc.dart 上有handleTap >及其功能正常运行,问题是在点击 HomePage.dart 时显示图标的更改,我点击该图标,在后端工作正常,但前端的“外观”图标的图标保持不变,完全没有变化。在展开->在展开图块上展开后,它向我显示了在展开图块中所有列表的更改状态。 (未归档图标->到已填充图标)
因此,这是我在 favorites_bloc.dart favorites.dart 中使用的代码(我认为应该是这样,显然有错误,否则我不会寻求帮助)

    class Favorites extends StatelessWidget {
  final Folders folders;

  Favorites({this.folders, Key key}) : super(key: key);
  final _favRem = new Icon(Icons.star_border);
  final _favAdd = new Icon(Icons.star, color: Colors.yellow);

  @override
  Widget build(BuildContext context) {
    final favBloc = FavoritesProvider.of(context);

    return new IconButton(
        icon: !favBloc.isFav ? _favRem : _favAdd, onPressed: ()=>favBloc.handleTap(folders.id, folders.title));
  }
}

favorites_bloc.dart

class FavoritesBloc extends Object with Requests{

  final _paeUser = BehaviorSubject<PaeUser>();
  final _response = BehaviorSubject<dynamic>();
  final _isFav = BehaviorSubject<bool>();

  PaeUser get paeUser => _paeUser.value;
  bool get isFav => _isFav.value ?? false;

  Function(PaeUser) get setPaeUser => _paeUser.sink.add;
  Function(bool) get setIsFav => _isFav.sink.add;

  void handleTap(int id, String title) {

    if (isFav) {
      remFavorites(id, paeUser.session);
      //todo
      print("Favorito: '$title' --> Removido");
      setIsFav(false);

    } else {
      addFavorites(id,paeUser.session)
          .then((map) {
        //todo
        print("Favorito: '$title' --> Adicionado");
        /// Caso esta situaçao se verifique..muito raro acontecer
        if (map['response']['fail'] == 'alreadyExist') {
          remFavorites(id, paeUser.session);
          //todo
          print("Favorito: '$title' adicionado e removido");
          setIsFav(false);

        }
      });

      setIsFav(true);
    }
  }

  dispose() {
    _response.close();
    _paeUser.close();
    _isFav.close();
  }
}

问题是“从根本不更改”状态变为“全部更改”状态,可能是因为它们的BehaviorSubject在折叠->展开后都改变了?但是为什么在点击图标时没有“反应”呢?有人有主意吗?等级问题?无状态小工具问题?流问题?集团问题?

感谢您的时间,对不起,对不起,如果您对问题的论述不清楚,请编辑或询问。

0 个答案:

没有答案