new Expanded(
child: _searchResult.length != 0 || controller.text.isNotEmpty
? new ListView.builder(
itemCount: _searchResult.length,
itemBuilder: (context, int i) {
return new Card(
child: new Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
new Row(children: <Widget>[
//new GestureDetector(),
new Container(
width: 45.0,
height: 45.0,
decoration: new BoxDecoration(
shape: BoxShape.circle,
image: new DecorationImage(
fit: BoxFit.fill,
image: new NetworkImage(
"https://raw.githubusercontent.com/flutter/website/master/_includes/code/layout/lakes/images/lake.jpg")))),
new Text(
" " +
userDetails[returnTicketDetails[i]
["user_id"]]["first_name"] +
" " +
(userDetails[returnTicketDetails[i]
["user_id"]]["last_name"]),
style: const TextStyle(
fontFamily: 'Poppins', fontSize: 20.0)),
]),
new Column(
children: <Widget>[
new Align(
alignment: FractionalOffset.topRight,
child: new FloatingActionButton(
onPressed: () {
groupId = returnTicketDetails[i]["id"];
print(returnTicketDetails[i]["id"]);
print(widget.id);
Navigator.push(
context,
new MaterialPageRoute(
builder: (context) => new Tickets(groupId,widget.id)));
},
heroTag: null,
backgroundColor: Color(0xFF53DD6C),
child: new Icon(Icons.arrow_forward),
)),
new Padding(padding: new EdgeInsets.all(3.0)),
],
)
]));
},
)
: new ListView.builder(
itemCount: _searchResult.length,
itemBuilder: (context, int i) {
return new Card(
child: new ListTile(
//title: new Text(userDetails[returnTicketDetails[i]["user_id"]]["first_name"]),
),
margin: const EdgeInsets.all(0.0),
);
},
),
),
Run Code Online (Sandbox Code Playgroud)
嗨,大家好!当我在ListView中动态构建Card时,我在考虑而不是像以前那样在每个控件中都保留FloatingActionButton,以便在每个Card中实现onTap方法并触发一些操作。换句话说,我希望在没有太多小部件的情况下尽可能简化卡片。先感谢您!
cre*_*not 13
正如Card
“材料表”一样,您可能要使用InkWell
,其中包括基于最接近祖先的“ 材料”高光和飞溅效果Material
。
return Card(
child: InkWell(
onTap: () {
// Function is executed on tap.
},
child: ..,
),
);
Run Code Online (Sandbox Code Playgroud)
只需用 GestureDetector 包裹卡片,如下所示,
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return new ListView.builder(
itemBuilder: (context, i) {
new GestureDetector(
child: new Card(
....
),
onTap: onCardTapped(i),
);
},
);
}
onCardTapped(int position) {
print('Card $position tapped');
}
}
Run Code Online (Sandbox Code Playgroud)
您实际上应该用InkWell而不是Card包裹孩子:
return Card(
child: InkWell(onTap: () {},
child: Text("hello")));
Run Code Online (Sandbox Code Playgroud)
这将使启动动画正确显示在卡内而不是卡外。
归档时间: |
|
查看次数: |
5399 次 |
最近记录: |