首页 > 解决方案 > 在颤动中选择时更改抽屉嵌套内容中小部件的颜色

问题描述

导航抽屉的内容使用嵌套列表视图填充如下

ListView.builder(
      physics: NeverScrollableScrollPhysics(),
      shrinkWrap: true,
      itemCount: someValue,itemBuilder: (context,indexRole){
    return  Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        Text(' Header ${[indexRole]}'),
        ListView.builder(
          //inner contentt
          physics: NeverScrollableScrollPhysics(),
          shrinkWrap: true,
          itemBuilder: (context,index){
            return ListTile(
              leading: Icon(xyz['icon'],
                color: page == index? Theme.of(context).primaryColor
                    :Theme.of(context).textTheme.title.color,
              ),
              title: Text('${xyz['name']}'),
              onTap: (){

                Navigator.pop(context);
              },
            );
          },itemCount: someValue,
        )
      ],
    );
  })

导航工作正常,但指的是要着色的特定 ListTile 是问题所在。谢谢你

侧抽屉,具有相同索引的小部件是彩色的

标签: listviewflutternested

解决方案


确实使用外部和内部ListView.Builder的索引得出了答案,如下所示

color: pageListIndex ==page && indexRole == headPtr && index == innerPtr ? Theme.of(context).primaryColor : Theme.of(context).textTheme.title.color,

变量在onTap(){}方法中分配

 onTap: (){
       int indexiRole = indexRole;
       innerPtr=index;
       headPtr = indexRole;`//...`

推荐阅读