我到处寻找,但找不到一种方法来改变ListTile的背景颜色,例如当用户点击它时。
对于看似常见的用例,有人有解决方案吗?
发布于 2018-12-07 17:10:14
要更改ListTile的背景色,只需将其包装在Container中并更改其color属性即可。之后,当ListTile的onTap被触发时,您可以更改颜色。
演示:

演示源码:
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: CustomTile()
),
),
);
}
}
class CustomTile extends StatefulWidget {
@override
CustomTileState createState() => CustomTileState();
}
class CustomTileState extends State<CustomTile> {
Color color;
@override
void initState() {
super.initState();
color = Colors.transparent;
}
@override
Widget build(BuildContext context) {
return Container(
color: color,
child: ListTile(
title: Text('Title'),
subtitle: Text('Subtitle'),
onTap: () {
setState(() {
color = Colors.lightBlueAccent;
});
},
),
);
}
}发布于 2018-12-07 17:14:33
由于你还没有描述你的用例,也没有分享任何代码,我已经分享了改变Listile颜色onTap()的示例代码
class Screen1 extends StatefulWidget {
@override
Screen1State createState() {
return new Screen1State();
}
}
class Screen1State extends State<Screen1> {
bool _color;
@override
void initState() {
super.initState();
_color = true;
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Card(
color: _color ? Colors.deepOrangeAccent : Colors.purpleAccent,
child: ListTile(
onTap: () {
setState(() {
_color = !_color;
});
},
title: Text(
'Title',
style: TextStyle(color: Colors.white),
),
subtitle: Text(
'Subtitle',
style: TextStyle(color: Colors.white),
),
),
),
));
}
}发布于 2020-11-28 13:43:30
如果你只是想要一种快速的方法,不需要太多的代码和定制,你可以像这样用RaisedButton包装它:
RaisedButton(
color: ...
child: ListTile(
color: Colors.transparent,
...
))
您还可以使用许多属性,如标高、高亮颜色、焦点颜色等。
https://stackoverflow.com/questions/53666202
复制相似问题