随着标题提到onPressed
ListView上的Button被自动调用
我目前有类似的东西(这是代码的粗略草图).基本上每当每行都有一个按钮时,只要屏幕上显示一个按钮,就会调用onClick.不确定这是一个颤动的错误还是我做错了什么建议?
class ModelEmployeeRow extends StatelessWidget
{
dynamic getInviteButton(String text, {var lambda,var borderRadius,var height})
{
final skillTextStyle = baseTextStyle.copyWith(
color: Colors.white,//const Color(0xffb6b2df),
fontSize: 11.0,
fontWeight: FontWeight.w200
);
var container = new Container(
alignment: Alignment.center,
margin:EdgeInsets.fromLTRB(0.0,0.0,100.0,0.0),
padding:EdgeInsets.fromLTRB(0.0,5.0,0.0,5.0),
decoration: new BoxDecoration(
borderRadius: new BorderRadius.all(new Radius.circular(4.0)),
color: Colors.green
),
child: new Text(text, style:skillTextStyle),
);
var button = new FlatButton(
onPressed: inviteClicked(employee),
child: container
);
return button;
}
@override
Widget build(BuildContext context)
{
var stacked = new Stack(
children: <Widget>
[
//mainContainer,
getInviteButton("Test"),
employeeThumbnail,
],
);
return new Container(
child: stacked,
);
}
}
Run Code Online (Sandbox Code Playgroud)
列表视图方面就是这个
var emplyeeListView = new ListView.builder(
itemCount: employeeListShared.length,
padding: new EdgeInsets.symmetric(vertical: 16.0),
itemBuilder: (context, index) {
return new ModelEmployeeRow(employeeListShared[index]);
},
);
Run Code Online (Sandbox Code Playgroud)
现在,当一行可见时,将调用该按钮的onclick.
Gün*_*uer 28
onPressed: inviteClicked(employee),
Run Code Online (Sandbox Code Playgroud)
应该
onPressed: () => inviteClicked(employee),
Run Code Online (Sandbox Code Playgroud)
传递回调函数而不是函数调用的结果.