首页 > 解决方案 > Flutter 定义 Map 多维结构,包括 Key Names

问题描述

我正在尝试创建一个自定义导航小部件。这本质上涉及一个 Map ,其中关键是路线。一个键是定义的,而不是简单的值是我想要一些附加数据的页面,而不仅仅是一个页面小部件。

对于每个地图值,我想要一个:

String pageType;
Dynamic altColor;
Widget pageContent

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

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

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

标签: flutterdictionarymultidimensional-arraykey

解决方案


尝试这个:

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);

推荐阅读