我在使用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在折叠->展开后都改变了?但是为什么在点击图标时没有“反应”呢?有人有主意吗?等级问题?无状态小工具问题?流问题?集团问题?
感谢您的时间,对不起,对不起,如果您对问题的论述不清楚,请编辑或询问。