运行报错: A GlobalKey was used multiple times inside one widget's child list.

来源:6-7 如何创建和使用Flutter的路由与导航?【边学边做】

慕无忌6890528

2022-03-01

main.dart 代码

import 'package:flutter/material.dart';
// 如何使用 Flutter 包 与 插件 < PluginUse() >
// import 'package:flutter_basics_mu_01/plugin_use.dart';

// StatelessWidget 无状态组件 < LessGroupLess() >
import 'package:flutter_basics_mu_01/learn_less_group_page.dart';

// StatefulWidget 有状态组件 < StatefulGroup() >
import 'package:flutter_basics_mu_01/learn_stateful_group_page.dart';

// Flutter 布局 < LayoutPage() >
import 'package:flutter_basics_mu_01/learn_layout.dart';

// Flutter 路由与导航


//
// void main() {
//   runApp(const MyApp());
//   // runApp(PluginUse());
// }
void main() => runApp(MyApp());


class MyApp extends StatelessWidget {
  // const MyApp({Key? key}) : super(key: key);

  // This widget is the root of your application.
  
  Widget build(BuildContext context) {
    return MaterialApp(
      // 最上面的title是在将应用划到手机屏幕中间时展示的title;下面的 title 是页面顶部的 title 。
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
            title: Text('Flutter 路由导航使用'),
        ),
        body: RouteNavigator(),
      ),
      // home: RouteNavigator(title: 'Flutter Demo Home Page'),
      /**
       * 四: 配置路由
       * 1. routes 是 MaterialApp 的属性, 我们可以在 routes 中添加路由设置 。
       */
      routes: <String, WidgetBuilder>{
        'less': (BuildContext context)=> LessGroupLess(), // 无状态组件 页面
        'ful': (BuildContext context)=> StatefulGroup(), // 有状态组件 页面
        'layout': (BuildContext context)=> LayoutPage(), // Flutter 布局 页面
        // 'less': (BuildContext context)=> LessGroupLess(), // 无状态组件 页面
      },
    );
  }
}



class RouteNavigator extends StatefulWidget {
  
  // State<RouteNavigator> createState() => _RouteNavigatorState();
  _RouteNavigatorState createState() => _RouteNavigatorState();
}

class _RouteNavigatorState extends State<RouteNavigator> {
  
  Widget build(BuildContext context) {
    return Container(
      // 放置上下排列的 Column
      child: Column(
        children: <Widget>[
          _item('StatelessWidget 基础组件', LessGroupLess(), 'less'),
          _item('StatefulWidget 基础组件', StatefulGroup(), 'ful'),
          _item(' Flutter 布局 基础组件', LayoutPage(), 'layout'),
        ],
      ),
    );
  }
  _item(String title, page, String routeName) {
    return Container(
      child: RaisedButton(
        onPressed: (){},
        child: Text(title),
      ),
    );
  }
}

报错图片
图片描述

写回答

1回答

CrazyCodeBoy

2022-03-02

对照下这块课程源码检查下你的代码实现看是否有出入的地方呢:https://git.imooc.com/coding-321/flutter_trip/src/master/demo/flutter_base_demo/lib/main.dart

0
0

Flutter从入门到进阶 实战携程网App 一网打尽核心技术

解锁Flutter开发新姿势,,系统掌握Flutter开发核心技术。

4788 学习 · 3274 问题

查看课程