Я не могу добавить MyItems в мой список избранного - PullRequest
0 голосов
/ 25 апреля 2020

Кажется, я не могу переключить значок избранного, когда пользователь нажимает его, и я не могу правильно передать идентификатор элемента, что я делаю не так? Вот мой код, и, пожалуйста, не говорите мне использовать провайдера: (

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,
     )

Предлагает страницу, я делаю то же самое и создаю MyItem и передаю его 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],
                       ),
                     ),



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...