【发布时间】:2018-12-17 11:47:45
【问题描述】:
编辑:修复它.. 往下看
老问题:
我正在尝试使用 Dismissible 小部件。
我可以成功监控到方向的状态,存储在directionVar中。
它输出类似DismissDirection.endToStart
我想使用此信息来更改我显示的图标的位置。 删除项目时,背景为红色,右侧有一个图标。类似 Gmail 的东西。
Widget build(BuildContext context) {
DismissDirection directionVar;
return ListView.builder(
itemBuilder: (BuildContext context, int index) {
return Dismissible(
key: Key(products[index]['title']), //Should be unique.
onDismissed: (DismissDirection direction) {
directionVar = direction;
},
我的问题是这部分:
background: Container(
color: Colors.red,
padding: EdgeInsets.only(left: 20.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Icon(
Icons.delete,
)
],
),
),);});}
我希望这部分根据directionVar 值进行更改。
padding 应根据 directionVar 的值以及 mainAxisAlignment 的值而变化。
类似的东西:
if(directionVar == DismissDirection.endToStart){
} else if (directionVar == DismissDirection.startToEnd){
}
但我无法访问这些语句中的background: 和padding 属性,因为它们是Dismissible 小部件的属性,不能在onDismissed(){} 中更改
这似乎是一个简单的问题,但似乎无法解决。
编辑:修复它..非常简单..刚刚添加了这个:
secondaryBackground: Container(
color: Colors.red,
padding: EdgeInsets.only(right: 20.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Icon(
Icons.delete,
)
],
),
),
【问题讨论】:
-
您是否尝试过让您的
directionVar可供两个小部件访问,然后您可以通过在每次方向改变时调用setState()来动态解析填充和mainAxisAlignment。 -
我需要一个有状态的小部件才能工作,但我正在使用无状态小部件
标签: background flutter dismissible