现在,我为我的抽屉提供了一个可供所有页面支架使用的类。当我推一条新路线时,抽屉将重置状态。有什么办法可以解决这个问题?我试图制作一个可以根据路线更改所选项目背景的抽屉,但是当我单击自定义列表图块时,它只会突出显示抽屉中的第一个项目,而这并不是期望的结果。
在状态类的顶部:
int selectedIndex = 0;
下面是一些代码:
ListView.builder(
padding: EdgeInsets.zero,
shrinkWrap: true,
itemCount: _drawerItems.length,
// primary: true,
itemBuilder: (context, index) {
DrawerItem currentItem = _drawerItems[index];
return Container(
decoration: BoxDecoration(
color: selectedIndex == index ? Colors.blue[100] : Colors.white,
borderRadius: BorderRadius.only(
topRight: Radius.circular(50),
bottomRight: Radius.circular(50))),
child: ListTile(
title: Text(
currentItem.title,
style: TextStyle(
fontSize: 15.0,
fontFamily: "Muli",
letterSpacing: .3,
fontWeight: FontWeight.w600,
),
),
leading: Icon(currentItem.icon, color: Colors.black),
onTap: () {
setState(() {
selectedIndex = index;
});
Navigator.of(context).popAndPushNamed(routes[index]);
},
),
);
},
)
答案 0 :(得分:0)
当您推一条新路线时,它将创建一个新抽屉,而当前抽屉将被处置。因此setState
什么也不做。
您应该尝试将selectedIndex
声明为静态[或全局]变量,然后将onTap更改为:
onTap: () {
selectedIndex = index;
Navigator.of(context).popAndPushNamed(routes[index]);
},