Flutter Define Map 包含Key Names的多维结构

Flutter Define Map Multi-dimensional structure including Key Names

我正在尝试创建自定义导航小部件。这本质上涉及一个 Map,其中键是路线。 One's key is defined instead of the value simply being the page 我想要一些额外的数据,而不仅仅是页面小部件。

对于我想要要求的每个地图值:

String pageType;
Dynamic altColor;
Widget pageContent

我已经能够通过在地图中放置一个子地图来实现这一点,但这不允许我定义我想要的数据类型和键。

class UINav extends StatelessWidget {
  UINav({required this.routes})
  final Map<String, Map<String, dynamic>> routes;
...

基本上每个地图元素都应该需要以上每一个而不是对任何数据开放。

试试这个:

class NavTarget {
  NavTarget(
      {required this.pageType,
      required this.altColor,
      required this.pageContent});
  String pageType;
  dynamic altColor;
  Widget pageContent;
}

然后:

final Map<String, NavTarget> routes = {
      'first': NavTarget(
          pageType: 'pageType1',
          altColor: 'altColor1',
          pageContent: const Text('pageContent1')),
      'second': NavTarget(
          pageType: 'pageType2',
          altColor: 'altColor2',
          pageContent: const Text('pageContent2')),
    };
print(routes['first']!.altColor);