我在学习颤栗中摸索着前进,到目前为止我已经成功地完成了我想要做的事情,但是这个问题一直困扰着我。
我有一个项目的ListView,我希望能够让用户长时间点击其中一个,然后从一对命令中进行选择。我真的找不到我喜欢的弹出菜单解决方案,所以我想,为什么不把两个RaisedButtons放在SubTitle中,因为它需要一个Widget。
我有按钮,正如我想要的那样,但是我希望在页面第一次加载时隐藏字幕,然后在用户长时间按下时变得可见。
现行代码如下:
new ListTile(
title: new Text(
_players[index].name,
style: regularTextStyle,
),
subtitle: new Visibility(
child: new Row(children: <Widget>[
new RaisedButton.icon(
icon: new Icon(Icons.delete),
label: new Text(Constants.DeletePlayer),
onPressed: null),
new Padding(padding: EdgeInsets.fromLTRB(10, 0, 0, 0)),
new RaisedButton.icon(
icon: new Icon(Icons.edit),
label: new Text(Constants.EditPlayer),
onPressed: null)
]),
visible: false,
),
trailing: new Icon(
_players[index].selected
? Icons.check_box
: Icons.check_box_outline_blank,
color: _players[index].selected ? Colors.blue : null,
),
onTap: () {
setState(() {
_players[index].toggle();
});
},
onLongPress: () {
setState(() {
});
},
如何从onLongPress处理程序中访问ListTile的Subtitle属性?
发布于 2018-12-07 19:30:45
您只需使用一个StatefulWidget,在长时间按下ListTile之后,就可以使用setState重新构建小部件。
检查此样本:
class MyApp extends StatefulWidget {
@override
MyAppState createState() => MyAppState();
}
class MyAppState extends State<MyApp> {
bool isVisible = false;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: ListTile(
title: Text("Title"),
onLongPress: () {
setState(() {
isVisible = !isVisible;
});
},
subtitle: isVisible ? Text("Subtitle sample") : null,
)));
}
}

https://stackoverflow.com/questions/53675372
复制相似问题