首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在点击时更改ListTile背景颜色?

如何在点击时更改ListTile背景颜色?
EN

Stack Overflow用户
提问于 2018-12-07 16:58:26
回答 3查看 14.9K关注 0票数 1

我到处寻找,但找不到一种方法来改变ListTile的背景颜色,例如当用户点击它时。

对于看似常见的用例,有人有解决方案吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-07 17:10:14

要更改ListTile的背景色,只需将其包装在Container中并更改其color属性即可。之后,当ListTileonTap被触发时,您可以更改颜色。

演示:

演示源码:

代码语言:javascript
运行
复制
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;
          });
        },
      ),
    );
  }
}
票数 7
EN

Stack Overflow用户

发布于 2018-12-07 17:14:33

由于你还没有描述你的用例,也没有分享任何代码,我已经分享了改变Listile颜色onTap()的示例代码

代码语言:javascript
运行
复制
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),
          ),
        ),
      ),
    ));
  }
}
票数 3
EN

Stack Overflow用户

发布于 2020-11-28 13:43:30

如果你只是想要一种快速的方法,不需要太多的代码和定制,你可以像这样用RaisedButton包装它:

代码语言:javascript
运行
复制
RaisedButton(
  color: ...
  child: ListTile(
    color: Colors.transparent,
    ...
  )

)

您还可以使用许多属性,如标高、高亮颜色、焦点颜色等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53666202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档