dart Flutter访问类属性

gjmwrych  于 2023-04-09  发布在  Flutter
关注(0)|答案(1)|浏览(120)

我有一个页面列表:

List<Widget> pagesList = [
PlayingPage(),
SongsPage(),
RadioPage(),
PlaylistsPage(),
FavoritesPage(),
SettingsPage(),
];

它们在另一个dart文件中,我访问它们的方式如下:

pagesList[index]

但我无法访问他们的属性,比如:

pagesList[index].pageName

我该怎么做?

cwtwac6a

cwtwac6a1#

您可以使用Map来实现这一点。

final Map<String, Widget> pages = {
  'Playing': PlayingPage(),
  'Songs': SongsPage(),
  'Radio': RadioPage(),
  'Playlists': PlaylistsPage(),
  'Favorites': FavoritesPage(),
  'Settings': SettingsPage(),
};

您可以使用pages.keys作为页面名称(如果您喜欢列表,则使用.toList())。要使用页面,您可以使用pages['Playing']!(首选空检查)。
就像您可以在这里使用的int index一样pageKey = pages.keys.elementAt(index)
你也可以玩扩展如果你喜欢

extension PageName on Widget {
  get pageName {
    if (this is PlayingPage) return 'Playing';
    if (this is SongsPage) return 'Songs';
    if (this is RadioPage) return 'Radio';
    ....
    else return runtimeType.toString();

  }
}

相关问题