Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 有没有办法将导航路线添加到颤振/省道列表中?_Flutter_Dart - Fatal编程技术网

Flutter 有没有办法将导航路线添加到颤振/省道列表中?

Flutter 有没有办法将导航路线添加到颤振/省道列表中?,flutter,dart,Flutter,Dart,我不熟悉颤振/飞镖,但我尝试了几种方法将导航路线添加到指定给栅格视图的列表中。这可能不是最有效的方法,但却是我想到的第一件事。我想在卡片上加一个墨水池,让导航路线通过。除此之外,我能想到的唯一其他解决方案是创建一个在列表中迭代的OnTap函数。目前,导航列表选项给了我一个错误,即“未来对象不能分配给导航器的参数类型”,我得到这个错误是因为它是一个常量。但我尝试了其他一些方法,得到了类似的结果。我当前的配置有什么问题?是否有更好/更有效的解决方案 这是我的选择列表: class Choice {

我不熟悉颤振/飞镖,但我尝试了几种方法将导航路线添加到指定给栅格视图的列表中。这可能不是最有效的方法,但却是我想到的第一件事。我想在卡片上加一个墨水池,让导航路线通过。除此之外,我能想到的唯一其他解决方案是创建一个在列表中迭代的OnTap函数。目前,导航列表选项给了我一个错误,即“未来对象不能分配给导航器的参数类型”,我得到这个错误是因为它是一个常量。但我尝试了其他一些方法,得到了类似的结果。我当前的配置有什么问题?是否有更好/更有效的解决方案

这是我的选择列表:

class Choice {
  const Choice({this.title, this.icon, this.nav});
  final String title;
  final IconData icon;
  final Navigator nav;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'Timer', icon: Icons.timer, nav: Navigator.pushNamed(context, TestConfirmation.id)),
  const Choice(title: 'Seating Chart', icon: Icons.event_seat),
  const Choice(title: 'Random', icon: Icons.shuffle),
  const Choice(title: 'Group Maker', icon: Icons.group_add),
  const Choice(title: 'Noise Monitor', icon: Icons.hearing),
  const Choice(title: 'Assign Tasks', icon: Icons.assignment_ind),
  const Choice(title: 'Survey', icon: Icons.rate_review),
  const Choice(title: 'Permission Slips', icon: Icons.assignment),
  const Choice(title: 'Lesson Plans', icon: Icons.local_library),
  const Choice(title: 'Attendance', icon: Icons.schedule),
  const Choice(title: 'Gradebook', icon: Icons.insert_chart)
];
class ChoiceCard extends StatelessWidget {
  const ChoiceCard({Key key, this.choice}) : super(key: key);
  final Choice choice;

  @override
  Widget build(BuildContext context) {
    final TextStyle textStyle = Theme.of(context).textTheme.subhead;
    return Card(
        color: Colors.white,
        child: InkWell(
          //onTap: choice.navigation,
          child: Center(
            child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  Expanded(
                      child: Icon(choice.icon,
                          size: 90.0, color: textStyle.color)),
                  Text(choice.title, style: textStyle),
                ]),
          ),
        ));
  }
}
class Choice {
  const Choice({this.title, this.icon, this.nav});
  final String title;
  final IconData icon;
  final String nav;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'Timer', icon: Icons.timer, nav: timer),
  const Choice(
      title: 'Seating Chart', icon: Icons.event_seat, nav: seatingChart),
  const Choice(title: 'Random', icon: Icons.shuffle, nav: randomPicker),
  const Choice(title: 'Group Maker', icon: Icons.group_add, nav: groupMaker),
];
class ChoiceCard extends StatelessWidget {
  const ChoiceCard({Key key, this.choice}) : super(key: key);
  final Choice choice;

  @override
  Widget build(BuildContext context) {
    final TextStyle textStyle = Theme.of(context).textTheme.subhead;
    return Card(
        color: Colors.white,
        child: InkWell(
          onTap: () {
            Navigator.pushNamed(context, choice.nav);
          },
          child: Center(
            child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  Expanded(
                    child:
                        Icon(choice.icon, size: 90.0, color: textStyle.color),
                  ),
                  Text(choice.title, style: textStyle),
                ]),
          ),
        ));
  }
}
class Router {
  static Route<dynamic> generateRoute(RouteSettings settings) {
    switch (settings.name) {
      case assignTasks:
        return MaterialPageRoute(builder: (_) => AssignTasks());
      case attendance:
        return MaterialPageRoute(builder: (_) => Attendance());
      case gradeBook:
        return MaterialPageRoute(builder: (_) => GradeBook());
      case groupMaker:
        return MaterialPageRoute(builder: (_) => GroupMaker());
            default:
        return MaterialPageRoute(
            builder: (_) => Scaffold(
                  body: Center(
                      child: Text('No route defined for ${settings.name}')),
                ));
    }
  }
}

//Dynamic Routes for generating navigation
const String assignTasks = AssignTasks.id;
const String attendance = ProfileForm.id;
const String gradeBook = ClassProfile.id;
const String groupMaker = GroupMaker.id;
类选择{
常量选择({this.title,this.icon,this.nav});
最后的字符串标题;
最终的Iconda图标;
最终导航仪导航;
}
常量列表选项=常量[
常量选项(标题:“计时器”,图标:Icons.Timer,导航:Navigator.pushNamed(上下文,TestConfirmation.id)),
常量选择(标题:“座位表”,图标:图标。事件座位),
常量选择(标题:“随机”,图标:图标。随机),
常量选择(标题:“组生成器”,图标:图标。组添加),
常量选择(标题:“噪音监视器”,图标:图标。听力),
常量选项(标题:“分配任务”,图标:Icons.assignment\u ind),
常数选择(标题:“调查”,图标:图标。费率审查),
const选项(标题:“权限单”,图标:Icons.assignment),
const选项(标题:“课程计划”,图标:Icons.local_library),
常数选择(标题:“出席”,图标:图标。时间表),
常量选项(标题:“成绩册”,图标:图标。插入图表)
];
这是我的名片:

class Choice {
  const Choice({this.title, this.icon, this.nav});
  final String title;
  final IconData icon;
  final Navigator nav;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'Timer', icon: Icons.timer, nav: Navigator.pushNamed(context, TestConfirmation.id)),
  const Choice(title: 'Seating Chart', icon: Icons.event_seat),
  const Choice(title: 'Random', icon: Icons.shuffle),
  const Choice(title: 'Group Maker', icon: Icons.group_add),
  const Choice(title: 'Noise Monitor', icon: Icons.hearing),
  const Choice(title: 'Assign Tasks', icon: Icons.assignment_ind),
  const Choice(title: 'Survey', icon: Icons.rate_review),
  const Choice(title: 'Permission Slips', icon: Icons.assignment),
  const Choice(title: 'Lesson Plans', icon: Icons.local_library),
  const Choice(title: 'Attendance', icon: Icons.schedule),
  const Choice(title: 'Gradebook', icon: Icons.insert_chart)
];
class ChoiceCard extends StatelessWidget {
  const ChoiceCard({Key key, this.choice}) : super(key: key);
  final Choice choice;

  @override
  Widget build(BuildContext context) {
    final TextStyle textStyle = Theme.of(context).textTheme.subhead;
    return Card(
        color: Colors.white,
        child: InkWell(
          //onTap: choice.navigation,
          child: Center(
            child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  Expanded(
                      child: Icon(choice.icon,
                          size: 90.0, color: textStyle.color)),
                  Text(choice.title, style: textStyle),
                ]),
          ),
        ));
  }
}
class Choice {
  const Choice({this.title, this.icon, this.nav});
  final String title;
  final IconData icon;
  final String nav;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'Timer', icon: Icons.timer, nav: timer),
  const Choice(
      title: 'Seating Chart', icon: Icons.event_seat, nav: seatingChart),
  const Choice(title: 'Random', icon: Icons.shuffle, nav: randomPicker),
  const Choice(title: 'Group Maker', icon: Icons.group_add, nav: groupMaker),
];
class ChoiceCard extends StatelessWidget {
  const ChoiceCard({Key key, this.choice}) : super(key: key);
  final Choice choice;

  @override
  Widget build(BuildContext context) {
    final TextStyle textStyle = Theme.of(context).textTheme.subhead;
    return Card(
        color: Colors.white,
        child: InkWell(
          onTap: () {
            Navigator.pushNamed(context, choice.nav);
          },
          child: Center(
            child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  Expanded(
                    child:
                        Icon(choice.icon, size: 90.0, color: textStyle.color),
                  ),
                  Text(choice.title, style: textStyle),
                ]),
          ),
        ));
  }
}
class Router {
  static Route<dynamic> generateRoute(RouteSettings settings) {
    switch (settings.name) {
      case assignTasks:
        return MaterialPageRoute(builder: (_) => AssignTasks());
      case attendance:
        return MaterialPageRoute(builder: (_) => Attendance());
      case gradeBook:
        return MaterialPageRoute(builder: (_) => GradeBook());
      case groupMaker:
        return MaterialPageRoute(builder: (_) => GroupMaker());
            default:
        return MaterialPageRoute(
            builder: (_) => Scaffold(
                  body: Center(
                      child: Text('No route defined for ${settings.name}')),
                ));
    }
  }
}

//Dynamic Routes for generating navigation
const String assignTasks = AssignTasks.id;
const String attendance = ProfileForm.id;
const String gradeBook = ClassProfile.id;
const String groupMaker = GroupMaker.id;
class ChoiceCard扩展了无状态小部件{
const ChoiceCard({Key-Key,this.choice}):super(Key:Key);
最终选择;
@凌驾
小部件构建(构建上下文){
final TextStyle TextStyle=Theme.of(context).textTheme.subhead;
回程卡(
颜色:颜色,白色,
孩子:InkWell(
//onTap:choice.navigation,
儿童:中心(
子:列(
mainAxisSize:mainAxisSize.min,
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
扩大(
子:图标(choice.Icon,
尺寸:90.0,颜色:textStyle.color),
文本(choice.title,style:textStyle),
]),
),
));
}
}

我能够通过使用GeneratorOute并构建一个单独的route类来解决这个问题。我用更小的数据集发布解决方案,以防将来有人遇到类似的问题

选择类:

class Choice {
  const Choice({this.title, this.icon, this.nav});
  final String title;
  final IconData icon;
  final Navigator nav;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'Timer', icon: Icons.timer, nav: Navigator.pushNamed(context, TestConfirmation.id)),
  const Choice(title: 'Seating Chart', icon: Icons.event_seat),
  const Choice(title: 'Random', icon: Icons.shuffle),
  const Choice(title: 'Group Maker', icon: Icons.group_add),
  const Choice(title: 'Noise Monitor', icon: Icons.hearing),
  const Choice(title: 'Assign Tasks', icon: Icons.assignment_ind),
  const Choice(title: 'Survey', icon: Icons.rate_review),
  const Choice(title: 'Permission Slips', icon: Icons.assignment),
  const Choice(title: 'Lesson Plans', icon: Icons.local_library),
  const Choice(title: 'Attendance', icon: Icons.schedule),
  const Choice(title: 'Gradebook', icon: Icons.insert_chart)
];
class ChoiceCard extends StatelessWidget {
  const ChoiceCard({Key key, this.choice}) : super(key: key);
  final Choice choice;

  @override
  Widget build(BuildContext context) {
    final TextStyle textStyle = Theme.of(context).textTheme.subhead;
    return Card(
        color: Colors.white,
        child: InkWell(
          //onTap: choice.navigation,
          child: Center(
            child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  Expanded(
                      child: Icon(choice.icon,
                          size: 90.0, color: textStyle.color)),
                  Text(choice.title, style: textStyle),
                ]),
          ),
        ));
  }
}
class Choice {
  const Choice({this.title, this.icon, this.nav});
  final String title;
  final IconData icon;
  final String nav;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'Timer', icon: Icons.timer, nav: timer),
  const Choice(
      title: 'Seating Chart', icon: Icons.event_seat, nav: seatingChart),
  const Choice(title: 'Random', icon: Icons.shuffle, nav: randomPicker),
  const Choice(title: 'Group Maker', icon: Icons.group_add, nav: groupMaker),
];
class ChoiceCard extends StatelessWidget {
  const ChoiceCard({Key key, this.choice}) : super(key: key);
  final Choice choice;

  @override
  Widget build(BuildContext context) {
    final TextStyle textStyle = Theme.of(context).textTheme.subhead;
    return Card(
        color: Colors.white,
        child: InkWell(
          onTap: () {
            Navigator.pushNamed(context, choice.nav);
          },
          child: Center(
            child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  Expanded(
                    child:
                        Icon(choice.icon, size: 90.0, color: textStyle.color),
                  ),
                  Text(choice.title, style: textStyle),
                ]),
          ),
        ));
  }
}
class Router {
  static Route<dynamic> generateRoute(RouteSettings settings) {
    switch (settings.name) {
      case assignTasks:
        return MaterialPageRoute(builder: (_) => AssignTasks());
      case attendance:
        return MaterialPageRoute(builder: (_) => Attendance());
      case gradeBook:
        return MaterialPageRoute(builder: (_) => GradeBook());
      case groupMaker:
        return MaterialPageRoute(builder: (_) => GroupMaker());
            default:
        return MaterialPageRoute(
            builder: (_) => Scaffold(
                  body: Center(
                      child: Text('No route defined for ${settings.name}')),
                ));
    }
  }
}

//Dynamic Routes for generating navigation
const String assignTasks = AssignTasks.id;
const String attendance = ProfileForm.id;
const String gradeBook = ClassProfile.id;
const String groupMaker = GroupMaker.id;
类选择{
常量选择({this.title,this.icon,this.nav});
最后的字符串标题;
最终的Iconda图标;
最终字符串导航;
}
常量列表选项=常量[
常量选择(标题:“计时器”,图标:Icons.Timer,导航:Timer),
常数选择(
标题:“座位图”,图标:Icons.event_座位,导航:座位图),
常量选择(标题:“随机”,图标:Icons.shuffle,导航:randomPicker),
const选项(标题:“groupMaker”,图标:Icons.Group_add,导航:groupMaker),
];
选择卡片类:

class Choice {
  const Choice({this.title, this.icon, this.nav});
  final String title;
  final IconData icon;
  final Navigator nav;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'Timer', icon: Icons.timer, nav: Navigator.pushNamed(context, TestConfirmation.id)),
  const Choice(title: 'Seating Chart', icon: Icons.event_seat),
  const Choice(title: 'Random', icon: Icons.shuffle),
  const Choice(title: 'Group Maker', icon: Icons.group_add),
  const Choice(title: 'Noise Monitor', icon: Icons.hearing),
  const Choice(title: 'Assign Tasks', icon: Icons.assignment_ind),
  const Choice(title: 'Survey', icon: Icons.rate_review),
  const Choice(title: 'Permission Slips', icon: Icons.assignment),
  const Choice(title: 'Lesson Plans', icon: Icons.local_library),
  const Choice(title: 'Attendance', icon: Icons.schedule),
  const Choice(title: 'Gradebook', icon: Icons.insert_chart)
];
class ChoiceCard extends StatelessWidget {
  const ChoiceCard({Key key, this.choice}) : super(key: key);
  final Choice choice;

  @override
  Widget build(BuildContext context) {
    final TextStyle textStyle = Theme.of(context).textTheme.subhead;
    return Card(
        color: Colors.white,
        child: InkWell(
          //onTap: choice.navigation,
          child: Center(
            child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  Expanded(
                      child: Icon(choice.icon,
                          size: 90.0, color: textStyle.color)),
                  Text(choice.title, style: textStyle),
                ]),
          ),
        ));
  }
}
class Choice {
  const Choice({this.title, this.icon, this.nav});
  final String title;
  final IconData icon;
  final String nav;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'Timer', icon: Icons.timer, nav: timer),
  const Choice(
      title: 'Seating Chart', icon: Icons.event_seat, nav: seatingChart),
  const Choice(title: 'Random', icon: Icons.shuffle, nav: randomPicker),
  const Choice(title: 'Group Maker', icon: Icons.group_add, nav: groupMaker),
];
class ChoiceCard extends StatelessWidget {
  const ChoiceCard({Key key, this.choice}) : super(key: key);
  final Choice choice;

  @override
  Widget build(BuildContext context) {
    final TextStyle textStyle = Theme.of(context).textTheme.subhead;
    return Card(
        color: Colors.white,
        child: InkWell(
          onTap: () {
            Navigator.pushNamed(context, choice.nav);
          },
          child: Center(
            child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  Expanded(
                    child:
                        Icon(choice.icon, size: 90.0, color: textStyle.color),
                  ),
                  Text(choice.title, style: textStyle),
                ]),
          ),
        ));
  }
}
class Router {
  static Route<dynamic> generateRoute(RouteSettings settings) {
    switch (settings.name) {
      case assignTasks:
        return MaterialPageRoute(builder: (_) => AssignTasks());
      case attendance:
        return MaterialPageRoute(builder: (_) => Attendance());
      case gradeBook:
        return MaterialPageRoute(builder: (_) => GradeBook());
      case groupMaker:
        return MaterialPageRoute(builder: (_) => GroupMaker());
            default:
        return MaterialPageRoute(
            builder: (_) => Scaffold(
                  body: Center(
                      child: Text('No route defined for ${settings.name}')),
                ));
    }
  }
}

//Dynamic Routes for generating navigation
const String assignTasks = AssignTasks.id;
const String attendance = ProfileForm.id;
const String gradeBook = ClassProfile.id;
const String groupMaker = GroupMaker.id;
class ChoiceCard扩展了无状态小部件{
const ChoiceCard({Key-Key,this.choice}):super(Key:Key);
最终选择;
@凌驾
小部件构建(构建上下文){
final TextStyle TextStyle=Theme.of(context).textTheme.subhead;
回程卡(
颜色:颜色,白色,
孩子:InkWell(
onTap:(){
Navigator.pushNamed(context,choice.nav);
},
儿童:中心(
子:列(
mainAxisSize:mainAxisSize.min,
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
扩大(
儿童:
图标(choice.Icon,大小:90.0,颜色:textStyle.color),
),
文本(choice.title,style:textStyle),
]),
),
));
}
}
路由器类别:

class Choice {
  const Choice({this.title, this.icon, this.nav});
  final String title;
  final IconData icon;
  final Navigator nav;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'Timer', icon: Icons.timer, nav: Navigator.pushNamed(context, TestConfirmation.id)),
  const Choice(title: 'Seating Chart', icon: Icons.event_seat),
  const Choice(title: 'Random', icon: Icons.shuffle),
  const Choice(title: 'Group Maker', icon: Icons.group_add),
  const Choice(title: 'Noise Monitor', icon: Icons.hearing),
  const Choice(title: 'Assign Tasks', icon: Icons.assignment_ind),
  const Choice(title: 'Survey', icon: Icons.rate_review),
  const Choice(title: 'Permission Slips', icon: Icons.assignment),
  const Choice(title: 'Lesson Plans', icon: Icons.local_library),
  const Choice(title: 'Attendance', icon: Icons.schedule),
  const Choice(title: 'Gradebook', icon: Icons.insert_chart)
];
class ChoiceCard extends StatelessWidget {
  const ChoiceCard({Key key, this.choice}) : super(key: key);
  final Choice choice;

  @override
  Widget build(BuildContext context) {
    final TextStyle textStyle = Theme.of(context).textTheme.subhead;
    return Card(
        color: Colors.white,
        child: InkWell(
          //onTap: choice.navigation,
          child: Center(
            child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  Expanded(
                      child: Icon(choice.icon,
                          size: 90.0, color: textStyle.color)),
                  Text(choice.title, style: textStyle),
                ]),
          ),
        ));
  }
}
class Choice {
  const Choice({this.title, this.icon, this.nav});
  final String title;
  final IconData icon;
  final String nav;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'Timer', icon: Icons.timer, nav: timer),
  const Choice(
      title: 'Seating Chart', icon: Icons.event_seat, nav: seatingChart),
  const Choice(title: 'Random', icon: Icons.shuffle, nav: randomPicker),
  const Choice(title: 'Group Maker', icon: Icons.group_add, nav: groupMaker),
];
class ChoiceCard extends StatelessWidget {
  const ChoiceCard({Key key, this.choice}) : super(key: key);
  final Choice choice;

  @override
  Widget build(BuildContext context) {
    final TextStyle textStyle = Theme.of(context).textTheme.subhead;
    return Card(
        color: Colors.white,
        child: InkWell(
          onTap: () {
            Navigator.pushNamed(context, choice.nav);
          },
          child: Center(
            child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  Expanded(
                    child:
                        Icon(choice.icon, size: 90.0, color: textStyle.color),
                  ),
                  Text(choice.title, style: textStyle),
                ]),
          ),
        ));
  }
}
class Router {
  static Route<dynamic> generateRoute(RouteSettings settings) {
    switch (settings.name) {
      case assignTasks:
        return MaterialPageRoute(builder: (_) => AssignTasks());
      case attendance:
        return MaterialPageRoute(builder: (_) => Attendance());
      case gradeBook:
        return MaterialPageRoute(builder: (_) => GradeBook());
      case groupMaker:
        return MaterialPageRoute(builder: (_) => GroupMaker());
            default:
        return MaterialPageRoute(
            builder: (_) => Scaffold(
                  body: Center(
                      child: Text('No route defined for ${settings.name}')),
                ));
    }
  }
}

//Dynamic Routes for generating navigation
const String assignTasks = AssignTasks.id;
const String attendance = ProfileForm.id;
const String gradeBook = ClassProfile.id;
const String groupMaker = GroupMaker.id;
类路由器{
静态路由生成器输出(路由设置){
开关(设置.名称){
案例任务:
返回MaterialPackageRoute(生成器:()=>AssignTasks());
个案出席人数:
返回MaterialPage路线(生成器:()=>Attention());
个案成绩册:
返回MaterialPage路线(生成器:()=>成绩册());
案例组制作人:
返回MaterialPackageRoute(生成器:()=>GroupMaker());
违约:
返回物料路线(
建造商:()=>脚手架(
正文:中(
子项:Text('No route defined for${settings.name}'),
));
}
}
}
//生成导航的动态路线
常量字符串assignTasks=assignTasks.id;
const String attention=ProfileForm.id;
常量字符串成绩册=ClassProfile.id;
常量字符串groupMaker=groupMaker.id;

我能够通过使用GeneratorOute并构建一个单独的route类来解决这个问题。我用更小的数据集发布解决方案,以防将来有人遇到类似的问题

选择类:

class Choice {
  const Choice({this.title, this.icon, this.nav});
  final String title;
  final IconData icon;
  final Navigator nav;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'Timer', icon: Icons.timer, nav: Navigator.pushNamed(context, TestConfirmation.id)),
  const Choice(title: 'Seating Chart', icon: Icons.event_seat),
  const Choice(title: 'Random', icon: Icons.shuffle),
  const Choice(title: 'Group Maker', icon: Icons.group_add),
  const Choice(title: 'Noise Monitor', icon: Icons.hearing),
  const Choice(title: 'Assign Tasks', icon: Icons.assignment_ind),
  const Choice(title: 'Survey', icon: Icons.rate_review),
  const Choice(title: 'Permission Slips', icon: Icons.assignment),
  const Choice(title: 'Lesson Plans', icon: Icons.local_library),
  const Choice(title: 'Attendance', icon: Icons.schedule),
  const Choice(title: 'Gradebook', icon: Icons.insert_chart)
];
class ChoiceCard extends StatelessWidget {
  const ChoiceCard({Key key, this.choice}) : super(key: key);
  final Choice choice;

  @override
  Widget build(BuildContext context) {
    final TextStyle textStyle = Theme.of(context).textTheme.subhead;
    return Card(
        color: Colors.white,
        child: InkWell(
          //onTap: choice.navigation,
          child: Center(
            child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  Expanded(
                      child: Icon(choice.icon,
                          size: 90.0, color: textStyle.color)),
                  Text(choice.title, style: textStyle),
                ]),
          ),
        ));
  }
}
class Choice {
  const Choice({this.title, this.icon, this.nav});
  final String title;
  final IconData icon;
  final String nav;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'Timer', icon: Icons.timer, nav: timer),
  const Choice(
      title: 'Seating Chart', icon: Icons.event_seat, nav: seatingChart),
  const Choice(title: 'Random', icon: Icons.shuffle, nav: randomPicker),
  const Choice(title: 'Group Maker', icon: Icons.group_add, nav: groupMaker),
];
class ChoiceCard extends StatelessWidget {
  const ChoiceCard({Key key, this.choice}) : super(key: key);
  final Choice choice;

  @override
  Widget build(BuildContext context) {
    final TextStyle textStyle = Theme.of(context).textTheme.subhead;
    return Card(
        color: Colors.white,
        child: InkWell(
          onTap: () {
            Navigator.pushNamed(context, choice.nav);
          },
          child: Center(
            child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  Expanded(
                    child:
                        Icon(choice.icon, size: 90.0, color: textStyle.color),
                  ),
                  Text(choice.title, style: textStyle),
                ]),
          ),
        ));
  }
}
class Router {
  static Route<dynamic> generateRoute(RouteSettings settings) {
    switch (settings.name) {
      case assignTasks:
        return MaterialPageRoute(builder: (_) => AssignTasks());
      case attendance:
        return MaterialPageRoute(builder: (_) => Attendance());
      case gradeBook:
        return MaterialPageRoute(builder: (_) => GradeBook());
      case groupMaker:
        return MaterialPageRoute(builder: (_) => GroupMaker());
            default:
        return MaterialPageRoute(
            builder: (_) => Scaffold(
                  body: Center(
                      child: Text('No route defined for ${settings.name}')),
                ));
    }
  }
}

//Dynamic Routes for generating navigation
const String assignTasks = AssignTasks.id;
const String attendance = ProfileForm.id;
const String gradeBook = ClassProfile.id;
const String groupMaker = GroupMaker.id;
类选择{
常量选择({this.title,this.icon,this.nav});
最后的字符串标题;
最终的Iconda图标;
最终字符串导航;
}
常量列表选项=常量[
常量选择(标题:“计时器”,图标:Icons.Timer,导航:Timer),
常数选择(
标题:“座位图”,图标:Icons.event_座位,导航:座位图),
常量选择(标题:“随机”,图标:Icons.shuffle,导航:randomPicker),
const选项(标题:“groupMaker”,图标:Icons.Group_add,导航:groupMaker),
];
选择卡片类:

class Choice {
  const Choice({this.title, this.icon, this.nav});
  final String title;
  final IconData icon;
  final Navigator nav;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'Timer', icon: Icons.timer, nav: Navigator.pushNamed(context, TestConfirmation.id)),
  const Choice(title: 'Seating Chart', icon: Icons.event_seat),
  const Choice(title: 'Random', icon: Icons.shuffle),
  const Choice(title: 'Group Maker', icon: Icons.group_add),
  const Choice(title: 'Noise Monitor', icon: Icons.hearing),
  const Choice(title: 'Assign Tasks', icon: Icons.assignment_ind),
  const Choice(title: 'Survey', icon: Icons.rate_review),
  const Choice(title: 'Permission Slips', icon: Icons.assignment),
  const Choice(title: 'Lesson Plans', icon: Icons.local_library),
  const Choice(title: 'Attendance', icon: Icons.schedule),
  const Choice(title: 'Gradebook', icon: Icons.insert_chart)
];
class ChoiceCard extends StatelessWidget {
  const ChoiceCard({Key key, this.choice}) : super(key: key);
  final Choice choice;

  @override
  Widget build(BuildContext context) {
    final TextStyle textStyle = Theme.of(context).textTheme.subhead;
    return Card(
        color: Colors.white,
        child: InkWell(
          //onTap: choice.navigation,
          child: Center(
            child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  Expanded(
                      child: Icon(choice.icon,
                          size: 90.0, color: textStyle.color)),
                  Text(choice.title, style: textStyle),
                ]),
          ),
        ));
  }
}
class Choice {
  const Choice({this.title, this.icon, this.nav});
  final String title;
  final IconData icon;
  final String nav;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'Timer', icon: Icons.timer, nav: timer),
  const Choice(
      title: 'Seating Chart', icon: Icons.event_seat, nav: seatingChart),
  const Choice(title: 'Random', icon: Icons.shuffle, nav: randomPicker),
  const Choice(title: 'Group Maker', icon: Icons.group_add, nav: groupMaker),
];
class ChoiceCard extends StatelessWidget {
  const ChoiceCard({Key key, this.choice}) : super(key: key);
  final Choice choice;

  @override
  Widget build(BuildContext context) {
    final TextStyle textStyle = Theme.of(context).textTheme.subhead;
    return Card(
        color: Colors.white,
        child: InkWell(
          onTap: () {
            Navigator.pushNamed(context, choice.nav);
          },
          child: Center(
            child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  Expanded(
                    child:
                        Icon(choice.icon, size: 90.0, color: textStyle.color),
                  ),
                  Text(choice.title, style: textStyle),
                ]),
          ),
        ));
  }
}
class Router {
  static Route<dynamic> generateRoute(RouteSettings settings) {
    switch (settings.name) {
      case assignTasks:
        return MaterialPageRoute(builder: (_) => AssignTasks());
      case attendance:
        return MaterialPageRoute(builder: (_) => Attendance());
      case gradeBook:
        return MaterialPageRoute(builder: (_) => GradeBook());
      case groupMaker:
        return MaterialPageRoute(builder: (_) => GroupMaker());
            default:
        return MaterialPageRoute(
            builder: (_) => Scaffold(
                  body: Center(
                      child: Text('No route defined for ${settings.name}')),
                ));
    }
  }
}

//Dynamic Routes for generating navigation
const String assignTasks = AssignTasks.id;
const String attendance = ProfileForm.id;
const String gradeBook = ClassProfile.id;
const String groupMaker = GroupMaker.id;
类选择卡扩展