flutter - 仅更改一项项目的样式,而不是更改所有项目的样式。将所有 ListTile 更改为一个

标签 flutter dart

当我点击 ListTile 后,应该只更改一项,但当我点击时,会更改所有 ListTile。

  class _HomeScreenState extends State<HomeScreen> {
  bool checked = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView.builder(
        itemCount: 7,
        itemBuilder: (BuildContext context, int i) {
          child: return Container(
            decoration: new BoxDecoration(
              color: checked ? Colors.teal : Colors.white
            ),
            child: ListTile(
              onTap: () => setState(() => checked = true),
              title: Text("My product"),
            ),
          );
        },
      ),
    );
  }
}

最佳答案

尝试下面的代码,

class _HomeScreenState extends State<HomeScreen> {
  int checkedIndex = -1;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView.builder(
        itemCount: 7,
        itemBuilder: (BuildContext context, int i) {
          return Container(
            decoration: BoxDecoration(
                color: checkedIndex == i ? Colors.teal : Colors.white
            ),
            child: ListTile(
              onTap: () => setState(() => checkedIndex = i),
              title: Text("My product"),
            ),
          );
        },
      ),
    );
  }
}

关于flutter - 仅更改一项项目的样式,而不是更改所有项目的样式。将所有 ListTile 更改为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58798719/

相关文章:

firebase - 即使坐标在抖动中也不同,用户之间的距离始终为0?

firebase - Flutter Phone认证报错原始例子

Flutter 崩溃 - 致命异常 : NSInvalidArgumentException

arrays - 动态/列表/​​数组变量抖动上的setState

dart - 根据DartLangSpec-v2.2,类中的静态和非静态变量可以具有相同的名称

visual-studio - 在 Visual Code Studio 中哪里可以找到 Flutter 布局检查器?

flutter - 子类化扩展 StatelessWidget 或 StatefulWidget 类的类

android - 如何在Flutter应用中创建启动屏幕

dart - Flutter FadeInImage Network - 不会在 setState 图像更改时淡入图像

firebase - flutter firebase 使用 future 从数据库获取字符串