listview - 如何更改 flutter/dart 中 ListView 项目的背景颜色

标签 listview flutter flutter-layout

有没有办法使用ListView而不是ListView.builder来查找特定项目的索引号?然后我想为列表中的特定项目设置背景。假设每三个项目的背景为红色。 我的列表长度为 10-15 项。

这是我的列表

// List - Words
class WordList extends StatelessWidget {
  final List<WordModal> _wordModal;

  WordList(this._wordModal);

  @override
  Widget build(BuildContext context) {
    return new ListView(
      padding: new EdgeInsets.symmetric(vertical: 8.0),
      children: _buildList(),
    );
  }

  List<WordCard> _buildList() {
    return _wordModal.map((word) => new WordCard(word)).toList();
  }
}

这是我的卡片生成器

// Word Card Item
class WordCard extends StatelessWidget {
  final WordModal _genericModal;

  WordCard(this._genericModal);

  @override
  Widget build(BuildContext context) {
    return new Card(
        margin: new EdgeInsets.symmetric(horizontal: 10.0, vertical: 6.0),
        child: Container(
          //color: ** want to put background color here **
          child: Column(
            children: <Widget>[
              new ExpansionTile(
                title: Container(
                  child: Column(
                    children: <Widget>[
                      new ListTile(
                        leading: new CircleAvatar(
                          child: Icon(Icons.image, color: Colors.grey), backgroundColor: Colors.white,),
                        title: Text(_genericModal.animalGenus),
                        subtitle: Text(
                          _genericModal.animalSpecies,
                        ),
                      ),
                    ],
                  ),
                ),
                children: <Widget>[
                  Row(
                    children: <Widget>[
                      SizedBox(
                        width: 50,
                      ),
                      Text(
                        _genericModal.animalHabitatLocation,
                        style: (TextStyle(fontStyle: FontStyle.italic)),
                      ),
                    ],
                  ),
                  new Row(
                    children: <Widget>[
                      Spacer(),
                      IconButton(
                          icon: new Icon(
                            Icons.volume_up,
                            size: 28,
                            color: Colors.grey,
                          ),
                          onPressed: () {
                            Navigator.push(
                                context,
                                MaterialPageRoute(
                                    builder: (context) => DetailPage()));
                          }),
                    ],
                  ),
                ],
              ),
            ],
          ),
        ));
  }
}

最佳答案

这是一些最小的实现

    int _selectedIndex;
  _onSelected(int index) {

    setState(() {
      _selectedIndex = index;
    });
  }

然后在 ListView 中选择要更改颜色的小部件

ListView.builder(

          itemCount: querySnapshot.documents.length,
          padding: EdgeInsets.all(8.0),
          itemBuilder: (context, i) {
...
     IconButton(
                          iconSize: 28,
                          icon: Icon(
                            Icons.favorite_border,
                            color: _selectedIndex != null && _selectedIndex == i
                                ? Colors.redAccent
                                : Colors.grey,
                          ),
                          onPressed: () {
                            _onSelected(i);

关于listview - 如何更改 flutter/dart 中 ListView 项目的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57400382/

相关文章:

Android - 如何在从数据库中添加/删除项目后动态刷新 ListView

flutter - 用户不互动时采取行动

flutter - 如何在 flutter 中更改应用栏标题

Flutter 可排序拖放 ListView

dart - Flutter:本地通知插件,当用户点击通知时导航到特定屏幕

firebase - Flutter:关于数据更改的 Firebase 推送通知

android - Simple List Item Checked 在点击时检查多个项目

android - ListView 的最后一项 : Fab hides it

flutter - 如何按日期时间 (String) 对 List<Map<String, dynamic>> 进行排序

android - 将 ListView 添加到 SlidingDrawer 中?