Как видно из заголовка onPressed
, кнопка в ListView вызывается автоматически.
В настоящее время у меня есть что-то вроде этого (это грубый набросок кода). Обычно, когда в каждом ряду есть кнопка, и когда кнопка отображается на экране, вызывается ее 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,
);
}
}
и сторона представления списка - это
var emplyeeListView = new ListView.builder(
itemCount: employeeListShared.length,
padding: new EdgeInsets.symmetric(vertical: 16.0),
itemBuilder: (context, index) {
return new ModelEmployeeRow(employeeListShared[index]);
},
);
Теперь, когда строка становится видимой называется нажатие кнопки.