点击时如何更改 ListTile 背景颜色?
How to change ListTile background color when tapped?
我到处搜索,但找不到更改 ListTile 背景颜色的方法,例如当用户点击它时。
有没有人对看似常见的用例有解决方案?
更改 ListTile, you can simply wrap it in a 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;
});
},
),
);
}
}
由于您没有描述您的用例或共享任何代码,我已经共享了更改 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),
),
),
),
));
}
}
如果您只是想要一种快速的方法,不需要太多代码和定制,您可以像这样用 RaisedButton
包装它:
RaisedButton(
color: ...
child: ListTile(
color: Colors.transparent,
...
)
)
您还可以使用许多属性,例如高程、突出显示颜色、焦点颜色等等。
我到处搜索,但找不到更改 ListTile 背景颜色的方法,例如当用户点击它时。
有没有人对看似常见的用例有解决方案?
更改 ListTile, you can simply wrap it in a 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;
});
},
),
);
}
}
由于您没有描述您的用例或共享任何代码,我已经共享了更改 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),
),
),
),
));
}
}
如果您只是想要一种快速的方法,不需要太多代码和定制,您可以像这样用 RaisedButton
包装它:
RaisedButton(
color: ...
child: ListTile(
color: Colors.transparent,
...
)
)
您还可以使用许多属性,例如高程、突出显示颜色、焦点颜色等等。