轻按时如何更改 ListTile 背景颜色?

Lor*_*ull 1 flutter flutter-layout

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

有没有人对看似常见的用例有解决方案?

Nik*_*las 6

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

演示:

演示 Gif

演示来源:

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;
          });
        },
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我明白了……ListTile 必须包装在另一个小部件中,如容器(或卡片)。我想知道为什么 Flutter 开发人员不只是将这个功能直接集成到 ListTile 中,并允许它的 bg 颜色在没有包装的情况下改变......似乎是一个常见的用例。感谢@anmol.majhail 和 Niklas。我没有发布任何代码,因为在这种情况下它不会有帮助。我的代码一团糟。 (2认同)