Like Status resetting when scrolling away
Closed this issue · 8 comments
Similar to #27, but the solution does not work for me.
I have a like button, inside of a List Tile. when i like it, then scroll it out of view, and back again, the likeBuilder is triggered, but the isLiked boolean of it is false, even though i previously returned true from an onTap call.
If i use this code, press the like button, the animation plays as expected, but if i scroll down, _currentlyAnsweredNotification.liked stays true, but the Like Button is rebuild as non-liked and can be pressed again (the isLike property of the like builder is also false)
ListTile(
title: Text(notificationContent),
subtitle: Column(
children: <Widget>[
Text(flairText),
Container(height: 20, color: null, child: Row()),
Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Helpful? '),
LikeButton(
size: 70,
circleColor: CircleColor(
start: Color(0xff00ddff), end: Color(0xff0099cc)),
bubblesColor: BubblesColor(
dotPrimaryColor: Color(0xff33b5e5),
dotSecondaryColor: Color(0xff0099cc),
),
isLiked: _currentlyAnsweredNotification.liked,
likeBuilder: (bool isLiked) { return Icon(
log("likeBuilder is like $isLiked");
(isLiked
? Icons.thumb_up
: Icons.thumb_up_off_alt),
color: Colors.black,
);
},
onTap: (isLiked) async {
_currentlyAnsweredNotification.liked =
!isLiked;
return _currentlyAnsweredNotification.liked;
},
),
],
))
],
),
)
save by yourself
hello can you specify what exactly you mean by that?
_currentlyAnsweredNotification.liked is saved by myself (as far as i understand it).
or do you mean ignoring the built-in isLiked property all together and using my own _currentlyAnsweredNotification.liked parameter at all times?
class A
{
bool isLiked=false;
}
save status by data not the ui
Hello,
i think i do not understand your suggestion correctly.
i do save the isLiked state in a class/object namely _currentlyAnsweredNotification
_currentlyAnsweredNotification is not overriden by the UI, _currentlyAnsweredNotification.isLiked stays true, even when the likeButton is destroyed.
but upon rebuild, the likeBuilder seems to be using the isLiked value which was used upon creation. _currentlyAnsweredNotification.isLiked is true when likeBuilder is called again, but the "isLiked" property passed to the likeBuilder is still false. i think this is due to _currentlyAnsweredNotification.isLiked being false when the LikeButton was created (so only the false value is saved, no reference to _currentlyAnsweredNotification.isLiked).
How to fix this?
is class A the equivalent to my _currentlyAnsweredNotification ? where am i supposed to place class a/how am i supposed to use it?
Team,I also have the same issue with the List View when scrolling it out of view, and back again the status resets. , Could you please provide an simple example on this please
class A {
bool isLiked = false;
}
List<A> list = List<A>.filled(1000, A());
ListView.builder(
itemBuilder: (b, index) {
var item = list[index];
return LikeButton(
isLiked: item.isLiked,
onTap: (bool isLiked) async {
item.isLiked = !item.isLiked;
return item.isLiked;
},
);
},
);
var item = list[index];
Video Like is working as expected is there any way to persistent likecounts?
var item = list[index];Video Like is working as expected is there any way to persistent likecounts?
the same way, in count builder