Flutter 点击时如何更改ListTile背景色?
我已经到处搜索了,但是找不到改变ListTile背景颜色的方法,例如当用户点击它时Flutter 点击时如何更改ListTile背景色?,flutter,flutter-layout,Flutter,Flutter Layout,我已经到处搜索了,但是找不到改变ListTile背景颜色的方法,例如当用户点击它时 是否有人能解决类似于常见用例的问题?要更改a的背景色,只需将其包装在a中并更改其颜色属性即可。之后,您可以在触发ListTile的onTap时更改颜色 演示: 演示源: import 'package:flutter/material.dart'; void main() => runApp(new MyApp()); class MyApp extends StatelessWidget { @o
是否有人能解决类似于常见用例的问题?要更改a的背景色,只需将其包装在a中并更改其颜色属性即可。之后,您可以在触发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;
});
},
),
);
}
}
要更改的背景色,只需将其包装在中并更改其颜色属性。之后,您可以在触发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;
});
},
),
);
}
}
由于您没有描述您的用例或共享任何代码,所以我共享了更改列表颜色onTap的示例代码
由于您没有描述您的用例或共享任何代码,所以我共享了更改列表颜色onTap的示例代码
如果您只想快速完成,无需太多代码和自定义,可以使用RaisedButton将其包装如下:
RaisedButton(
color: ...
child: ListTile(
color: Colors.transparent,
...
)
您还可以使用许多属性,如高程、高光颜色、焦点颜色等。如果您只想快速完成此操作,无需太多代码和自定义,可以使用RaisedButton将其包装如下:
RaisedButton(
color: ...
child: ListTile(
color: Colors.transparent,
...
)
您还可以使用许多属性,如高程、高光颜色、焦点颜色等。我明白了……ListTile必须包装在另一个小部件中,如容器或卡片。我想知道为什么Flatter开发人员不直接将此功能集成到ListTile中,并使其bg颜色可以在没有包装的情况下更改…这似乎是一个常见的用例。谢谢@anmol.majhail和Niklas。我没有发布任何代码,因为在这种情况下它不会有帮助。我的代码乱七八糟。@pskink是的,我看了InkWell。我喜欢它提供onTap、onDoubleTap和onLongPress处理程序。除此之外,使用一种方法比另一种方法有什么优势,例如,在墨水池中而不是容器中包装ListTiles?@LordNull请看,我不太确定这说明了什么。你能简单解释一下吗?@LordNull它只是说我看到的每个ListTile项目都在内部使用InkWell…ListTile必须包装在另一个小部件中,比如容器或卡片。我想知道为什么Flatter开发人员不直接将此功能集成到ListTile中,并使其bg颜色可以在没有包装的情况下更改…这似乎是一个常见的用例。谢谢@anmol.majhail和Niklas。我没有发布任何代码,因为在这种情况下它不会有帮助。我的代码乱七八糟。@pskink是的,我看了InkWell。我喜欢它提供onTap、onDoubleTap和onLongPress处理程序。除此之外,使用一种方法比另一种方法有什么优势,例如,在墨水池中而不是容器中包装ListTiles?@LordNull请看,我不太确定这说明了什么。你能简单解释一下吗?@LordNull它只是说每个ListTile项目都在内部使用InkWell可能会有所帮助。也许会有帮助。