gpt4 book ai didi

dart - Flutter:将 ListTile 标记为在抽屉中被选中

转载 作者:行者123 更新时间:2023-12-03 02:51:02 24 4
gpt4 key购买 nike

我想将当前页面的 ListTile 标记为已选中,但 2 天前我正在寻找一种通用的方法来做到这一点。

我看到像 this 这样的例子一种是硬编码 tile ID 并使用 case 来知道哪个是当前 Tile。我的问题是,如果我有 100 个 ListTile 怎么办?如何以编程方式将 selected 属性更改为选定的 Tile?或者更真实的情况:我有一个 Drawer 在每个版本中都会改变形状,因此保留带有硬编码 ID 的代码是没有用的。我希望你能理解这个想法。

几天来我一直在尝试不同的解决方案,但对我来说似乎没有一个足够通用。

最佳答案

像下面这样简单地创建枚举类。

enum DrawerSelection { home, favorites, settings}

如果需要,创建枚举对象并传递预定义值,在我的例子中,我将 home 作为选定的 ListTile 项目传递。就像下面的代码。

class _MyHomePage extends State<MyHomePage> {
DrawerSelection _drawerSelection = DrawerSelection.home;

然后在 ListTile 中使用 selected 属性并像下面的代码一样更改枚举 onTap()。

 ListTile(
selected: _drawerSelection == DrawerSelection.home,
title: Text('Home'),
leading: Icon(Icons.home),
onTap: () {
Navigator.pop(context);
setState(() {
_drawerSelection = DrawerSelection.home;
_currentWidget = MainWidget();
_appBarTitle = Text("Home");
});
},
),
ListTile(
selected: _drawerSelection == DrawerSelection.favorites,
title: Text('Favorites'),
leading: Icon(Icons.favorite),
onTap: () {
Navigator.pop(context);
setState(() {
_drawerSelection = DrawerSelection.favorites;
_currentWidget = FavoritesWidget();
_appBarTitle = Text("Favorites");
});
},
),
ListTile(
selected: _drawerSelection == DrawerSelection.settings,
title: Text('Settings'),
leading: Icon(Icons.settings),
onTap: () {
Navigator.pop(context);
setState(() {
_drawerSelection = DrawerSelection.settings;
_currentWidget = SettingsWidget();
_appBarTitle = Text("Settings");
});
},
),

关于dart - Flutter:将 ListTile 标记为在抽屉中被选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55669491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com