当用户按下favrotes图标时,我似乎无法切换它,也无法正确地传递该项目的ID,我在做什么错?这是我的代码,请不要告诉我使用提供程序:(
main:
void toggleFavs(String itemId) {
int _selectedIndex =
favorites.indexWhere((element) => element.id == itemId);
print('$_selectedIndex in main');
if (_selectedIndex >= 0) {
favorites.removeAt(_selectedIndex);
} else {
print('$_selectedIndex in main after gu');
favorites.add(DUMMY_TAMATA.firstWhere((element) => element.id == itemId));
}
}
bool isFavorite(String itemId) {
setState(() {
return favorites.any((element) => element.id == itemId);
});
}
initialRoute: '/',
routes: {
'/': (ctx) => TabsScreen(toggleFavs, isFavorite, favorites)
tabs:
final List<Tamata> favoriteList;
final Function toggleFav;
final Function isFav;
TabsScreen(this.toggleFav, this.isFav, this.favoriteList);
OffersPage(
searchedString: searchedText,
displayFav: widget.toggleFav,
isFav: widget.isFav,
)
offerspage,我做同样的事情,创建MyItem并将其沿其ID传递给MyItem。
偏移页面:
SliverGrid(
delegate: SliverChildBuilderDelegate(
(context, index) {
retur MyItem(
icon: availableVeggies[index].icon,
imageUrl: availableVeggies[index].imageUrl,
label: availableVeggies[index].title,
price: availableVeggies[index].price,
id: availableVeggies[index].id,
displayFavorites: displayFav,
isFavorite: isFav,
);
},
childCount:
SSE.isEmpty ? availableVeggies.length : SSE.keys.length,
),
MyItem 。
IconButton(
onPressed: () {
print(widget.label);
print(widget.id);
widget.displayFavorites(widget.id);
},
icon: Icon(
widget.displayFavorites(widget.id) == true
? Icons.favorite
: Icons.favorite_border,
size: 25.0,
color: Colors.orange[800],
),
),