Flutter 点击时如何更改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

我已经到处搜索了,但是找不到改变ListTile背景颜色的方法,例如当用户点击它时


是否有人能解决类似于常见用例的问题?

要更改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可能会有所帮助。也许会有帮助。