我已经根据现有问题的现有解决方案解决了上一个问题。
我想在单击 onTap 时更改作为 ListView 子项的 CustomListTile 的颜色,并将其他子项颜色设置为默认颜色?
在为抽屉创建有状态小部件时,我仍然面临问题。
这是项目的 Github 链接:https ://github.com/Aaklii/flutter_app
drawer: buildDrawer(context),
我想在稍后阶段为抽屉项目提供更多功能,所以我想创建一个有状态的小部件,但这段代码不起作用:
class ListDrawer extends StatefulWidget {
List<ListClass> listOjects;
ListDrawer({this.listOjects});
@override
_ListDrawerState createState() => _ListDrawerState();
}
class _ListDrawerState extends State<ListDrawer> {
@override
Widget build(BuildContext context) {
return SafeArea(
child: Column(
children: <Widget>[
Expanded(
child: Padding(
padding: EdgeInsets.all(20),
child: ListView.builder(
itemCount: widget.listOjects.length,
itemBuilder: (context, index) {
return CustomListTile(
listObject: widget.listOjects[index],
// isSelected:
// selectedIndex != null && selectedIndex == index
// ? true
// : false,
index: index,
);
},
),
),
)
],
),
);
}
}
所以我目前正在使用 buildDrawer()
Drawer buildDrawer(BuildContext context) {
return Drawer(
child: SafeArea(
child: Column(
children: <Widget>[
Expanded(
child: Padding(
padding: EdgeInsets.all(20),
child: ListView.builder(
itemCount: listOjects.length,
itemBuilder: (context, index) {
return InkWell(
onTap: () {
setState(() {
onSelected(index);
});
Navigator.of(context).pop();
},
child: CustomListTile(
listObject: listOjects[index],
isSelected:
selectedIndex != null && selectedIndex == index
? true
: false,
index: index,
),
);
},
),
),
)
],
),
),
);
}