Flutter 如何避免动画列表中圆形化身的口吃?
当使用AnimatedList小部件时,有没有一种方法可以避免圆圈内的头像图像口吃 口吃可以在下面的gif上看到 我目前实现的动画列表是Flutter 如何避免动画列表中圆形化身的口吃?,flutter,Flutter,当使用AnimatedList小部件时,有没有一种方法可以避免圆圈内的头像图像口吃 口吃可以在下面的gif上看到 我目前实现的动画列表是 Widget _buildSearchResults() { return AnimatedList( key: _searchResultListKey, shrinkWrap: true, physics: ClampingScrollPhys
Widget _buildSearchResults() {
return AnimatedList(
key: _searchResultListKey,
shrinkWrap: true,
physics: ClampingScrollPhysics(),
initialItemCount: _searchResults.length,
itemBuilder: (context, index, animation) {
return _buildSearchResultItem(
context, index, _searchResults[index], animation);
},
),
}
Widget _buildSearchResultItem(
BuildContext context, int index, User user, Animation<double> animation) {
return SizeTransition(
axis: Axis.vertical,
sizeFactor: animation,
child: Container(
margin: EdgeInsets.symmetric(vertical: 20.h),
child: Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
CachedNetworkImage(
imageUrl: user.imageURL,
imageBuilder: (context, imageProvider) => CircleAvatar(
backgroundImage: imageProvider,
),
placeholder: (context, url) => BulbiLoading(),
),
SizedBox(width: 35.w),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
user.name,
style: TextStyle(
color: BulbiColors.primary,
fontSize: 38.ssp,
),
),
SizedBox(height: 15.h),
Text(
"@${user.username}",
style: TextStyle(
color: Colors.grey[600],
fontSize: 35.ssp,
),
),
],
),
),
SizedBox(width: 20.w),
TextButton(
style: TextButton.styleFrom(
onSurface: BulbiColors.secondary,
primary: BulbiColors.secondary,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(100),
),
),
onPressed: () {
setState(() {
_invitedUsers.add(user);
_invitedUserListKey.currentState.insertItem(
_invitedUsers.length - 1,
duration: _transitionDuration,
);
final removedUser = _searchResults.removeAt(index);
_searchResultListKey.currentState.removeItem(
index,
(context, animation) => _buildSearchResultItem(
context, index, removedUser, animation),
duration: _transitionDuration,
);
});
},
child: Text(
"Invite",
style: TextStyle(
color: BulbiColors.secondary,
fontSize: 39.ssp,
),
),
),
],
),
),
);}
Widget\u buildSearchResults(){
返回动画列表(
键:\ u searchResultListKey,
收缩膜:对,
物理:ClampingScrollPhysics(),
initialItemCount:\u searchResults.length,
itemBuilder:(上下文、索引、动画){
返回_buildSearchResultItem(
上下文、索引、搜索结果[索引]、动画);
},
),
}
Widget\u buildSearchResultItem(
BuildContext上下文、int索引、用户、动画){
返回大小转换(
轴:轴垂直,
sizeFactor:动画,
子:容器(
边缘:边缘组。对称(垂直:20.h),
孩子:排(
crossAxisAlignment:crossAxisAlignment.end,
儿童:[
CachedNetworkImage(
imageUrl:user.imageUrl,
imageBuilder:(上下文,imageProvider)=>CircleAvatar(
背景图片:imageProvider,
),
占位符:(上下文,url)=>BulbiLoading(),
),
尺寸箱(宽度:35.w),
扩大(
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
正文(
user.name,
样式:TextStyle(
颜色:球双色。原色,
字体大小:38.ssp,
),
),
尺寸箱(高度:15.h),
正文(
“@${user.username}”,
样式:TextStyle(
颜色:颜色。灰色[600],
字体大小:35.ssp,
),
),
],
),
),
尺寸箱(宽度:20.w),
文本按钮(
样式:TextButton.styleFrom(
表面:球二色,
初级:球二色。次级,
形状:圆形矩形边框(
边界半径:边界半径。圆形(100),
),
),
已按下:(){
设置状态(){
_添加(用户);
_invitedUserListKey.currentState.insertItem(
_长度-1,
持续时间:_过渡持续时间,
);
最终removedUser=\u searchResults.removeAt(索引);
_searchResultListKey.currentState.removeItem(
指数
(上下文、动画)=>\u buildSearchResultItem(
上下文、索引、removedUser、动画),
持续时间:_过渡持续时间,
);
});
},
子:文本(
“邀请”,
样式:TextStyle(
颜色:球二色,
字体大小:39.ssp,
),
),
),
],
),
),
);}
如果我删除圆圈化身图像,它将不会出现如上所示的问题,但我不能这样做,因为我需要圆圈化身来让用户的UI更清晰
有没有人和我有同样的问题
多谢各位