Dart 如何从分离抽屉文件调用颤振路径?

Dart 如何从分离抽屉文件调用颤振路径?,dart,flutter,Dart,Flutter,我正在按如下方式设置应用程序: main.dart(导入点3、4、5并映射到路线上) 模块/DrawerMenu.dart(调用以通过路线导航到点3、4、5) 模块/Dashboard.dart(导入点2作为菜单) 模块/Login.dart(导入点2作为菜单) 模块/Profile.dart(导入点2作为菜单) 我尝试了以下代码,但显示了以下错误: I/flutter (28092): #6 _DrawerMenuState.build.<anonymous closure&g

我正在按如下方式设置应用程序:

  • main.dart(导入点3、4、5并映射到路线上)
  • 模块/DrawerMenu.dart(调用以通过路线导航到点3、4、5)
  • 模块/Dashboard.dart(导入点2作为菜单)
  • 模块/Login.dart(导入点2作为菜单)
  • 模块/Profile.dart(导入点2作为菜单)
  • 我尝试了以下代码,但显示了以下错误:

    I/flutter (28092): #6      _DrawerMenuState.build.<anonymous closure>
    package:route/module/DrawerMenu.dart:45
    I/flutter (28092): #7      _InkResponseState._handleTap 
    package:flutter/…/material/ink_well.dart:511
    I/flutter (28092): #8      _InkResponseState.build.<anonymous closure> 
    package:flutter/…/material/ink_well.dart:566
    I/flutter (28092): #9      GestureRecognizer.invokeCallback 
    package:flutter/…/gestures/recognizer.dart:166
    I/flutter (28092): #10     TapGestureRecognizer._checkUp 
    package:flutter/…/gestures/tap.dart:240
    I/flutter (28092): #11     TapGestureRecognizer.acceptGesture 
    package:flutter/…/gestures/tap.dart:211
    I/flutter (28092): #12     GestureArenaManager.sweep 
    package:flutter/…/gestures/arena.dart:156
    I/flutter (28092): #13     _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent 
    package:flutter/…/gestures/binding.dart:225
    I/flutter (28092): #14     _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent 
    package:flutter/…/gestures/binding.dart:199
    I/flutter (28092): #15     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent 
    package:flutter/…/gestures/binding.dart:156
    I/flutter (28092): #16     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue 
    package:flutter/…/gestures/binding.dart:102
    I/flutter (28092): #17     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket 
    package:flutter/…/gestures/binding.dart:86
    I/flutter (28092): #21     _invoke1  (dart:ui/hooks.dart:233:10)
    I/flutter (28092): #22     _dispatchPointerDataPacket  (dart:ui/hooks.dart:154:5)
    I/flutter (28092): (elided 3 frames from package dart:async)
    I/flutter (28092):
    I/flutter (28092): Handler: onTap
    I/flutter (28092): Recognizer:
    I/flutter (28092):   TapGestureRecognizer#b7ab7(debugOwner: GestureDetector, state: ready, won arena, finalPosition:
    I/flutter (28092):   Offset(95.6, 329.1), sent tap down)
    I/flutter (28092): 
    ═══════════════════
    
    I/flatter(28092):#6_DrawerMenuState.build。
    包装:路线/模块/抽屉菜单。省道:45
    I/颤振(28092):#7!
    包装:颤振/../material/ink\u井。省道:511
    I/flatter(28092):#8#InkResponseState.build。
    包装:颤振/../material/ink\u井。省道:566
    I/flatter(28092):#9手势识别器.invokeCallback
    软件包:flatter/../signatures/recognizer.dart:166
    I/颤振(28092):#10 TapGestureRecognitor.U检查
    套装:颤振/../signatures/tap.省道:240
    I/颤振(28092):#11 TapGestureRecognitor.Accept手势
    套装:颤振/../signatures/tap.dart:211
    I/颤振(28092):#12个手势aremanager.sweep
    套装:颤振/../signatures/arena.飞镖:156
    I/颤振(28092):#13#WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent
    包装:颤振/手势/装订。省道:225
    I/颤振(28092):#14 35; WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent
    包装:颤振/../signatures/binding.dart:199
    I/颤振(28092):#15#WidgetsFlutterBinding&BindingBase&GestureBinding.#手点事件
    包装:颤振/../signatures/binding.省道:156
    I/颤振(28092):#16#WidgetsFlutterBinding&BindingBase&GestureBinding.#冲洗点设置
    包裹:颤振/../signatures/binding.dart:102
    I/颤振(28092):#17#WidgetsFlutterBinding&BindingBase&GestureBinding.#handlePointerDataPacket.#
    包装:颤振/../signatures/binding.dart:86
    I/flatter(28092):#21 invoke1(省道:ui/hooks.省道:233:10)
    I/flatter(28092):#22 dispatchPointerDataPacket(dart:ui/hooks.dart:154:5)
    I/颤振(28092):(从包dart中删除3帧:异步)
    I/颤振(28092):
    I/颤振(28092):处理程序:onTap
    I/颤振(28092):识别器:
    I/flatter(28092):点击手势识别器#b7ab7(调试所有者:手势检测器,状态:就绪,赢得竞技场,最终位置:
    I/颤振(28092):偏移(95.6329.1),发送攻丝下降)
    I/颤振(28092):
    ═══════════════════
    
    我的这些代码: 1.主飞镖

    导入“包装:颤振/材料.省道”;
    导入“module/Dashboard.dart”;
    导入“module/Login.dart”;
    导入“module/Profile.dart”;
    void main()=>runApp(RouteApp());
    类RouteApp扩展StatefulWidget{
    @凌驾
    _RouteAppState createState()=>RouteAppState();
    }
    类_RouteAppState扩展状态{
    @凌驾
    小部件构建(构建上下文){
    返回材料PP(
    initialRoute:“/”,
    路线:{
    “/”:(上下文)=>Dashboard(),
    “/login”:(上下文)=>login(),
    “profile”:(上下文)=>profile()
    },
    );
    }
    }
    
  • 飞镖
  • 导入“包装:颤振/材料.省道”;
    类DrawerMenu扩展StatefulWidget{
    @凌驾
    _DroperNuState createState()=>\u DroperNuState();
    }
    类_DrawerMenuState扩展状态{
    @凌驾
    小部件构建(构建上下文){
    回程抽屉(
    子:ListView(
    儿童:[
    UserAccountsDrawerHeader(
    accountName:Text('Mulyawan Sentosa'),
    accountEmail:Text('mulyawan@flazhost.com'),
    ),
    列表砖(
    领先:标志(尺寸:20),
    标题:文本(“仪表板”),
    onTap:(){
    设置状态(){
    Navigator.of(context.pushNamed('/');
    Navigator.pop(上下文);
    });
    },
    ),
    列表砖(
    领先:标志(尺寸:20),
    标题:文本(“登录”),
    onTap:(){
    设置状态(){
    Navigator.of(context.pushNamed('/login');
    Navigator.pop(上下文);
    });
    },
    ),
    列表砖(
    领先:标志(尺寸:20),
    标题:文本(“概要文件”),
    onTap:(){
    设置状态(){
    Navigator.of(context.pushNamed('/profile');
    Navigator.pop(上下文);
    });
    },
    ),
    ],
    ));
    }
    }
    
  • 飞镖
  • 导入“包装:颤振/材料.省道”;
    导入“/DrawerMenu.dart”;
    类Dashboard扩展StatefulWidget{
    @凌驾
    _DashboardState createState()=>\u DashboardState();
    }
    类_仪表板状态扩展状态{
    @凌驾
    小部件构建(构建上下文){
    返回脚手架(
    抽屉:抽屉菜单(),
    appBar:appBar(
    标题:文本(“仪表板”),
    ),
    主体:容器(
    子项:文本('Halaman Dashboard'),
    ),
    );
    }
    }
    
  • Login.dart
  • 导入“包装:颤振/材料.省道”;
    类登录扩展StatefulWidget{
    @凌驾
    _LoginState createState()=>\u LoginState();
    }
    类_LoginState扩展了状态{
    @凌驾
    小部件构建(构建上下文){
    返回容器(
    子项:文本(“Halaman登录”),
    );
    }
    }
    
  • 省道
  • 导入“包装:颤振/材料.省道”;
    导入“/DrawerMenu.dart”;
    类配置文件扩展了StatefulWidget{
    @凌驾
    _ProfileState createState()=>\u ProfileState();
    }
    类_ProfileState扩展了状态{
    @凌驾
    小部件构建(构建上下文){
    返回脚手架(
    抽屉:抽屉菜单(),
    appBar:appBar(
    标题:文本(“概要文件”),
    ),
    主体:容器(
    子项:文本('Halaman Profile'),
    ),
    );
    }
    }
    

    我需要从分开的抽屉里呼叫route,因为我已经被设置好了。请提供帮助?

    在onTap函数中,再次删除setState()(因为不需要)。并将弹出功能移到顶部:

    onTap: () {
      Navigator.pop(context);
      Navigator.pushNamed(context, '/profile');
    }
    
    使用前面的方法,首先是nav