Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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
Android 从从ModuleWidget继承的模块访问路由时出现问题_Android_Flutter_Routes_Dart Pub_Modular - Fatal编程技术网

Android 从从ModuleWidget继承的模块访问路由时出现问题

Android 从从ModuleWidget继承的模块访问路由时出现问题,android,flutter,routes,dart-pub,modular,Android,Flutter,Routes,Dart Pub,Modular,遵循模块的结构: I/flutter (13793): -- AppModule INITIALIZED I/flutter (13793): -- HomeModule INITIALIZED I/flutter (13793): -- ReviewsModule INITIALIZED I/flutter (13793): -- HomeModule DISPOSED I/flutter (13793): -- SearchModule INITIALIZED 类AppModule扩展了

遵循模块的结构:

I/flutter (13793): -- AppModule INITIALIZED
I/flutter (13793): -- HomeModule INITIALIZED
I/flutter (13793): -- ReviewsModule INITIALIZED
I/flutter (13793): -- HomeModule DISPOSED
I/flutter (13793): -- SearchModule INITIALIZED

类AppModule扩展了MainModule{
@凌驾
列表获取绑定=>[
绑定((i)=>TeacherListController()),
绑定((i)=>ReviewContentController()),
绑定((i)=>SigninController()),
绑定((i)=>SignupController()),
绑定((i)=>AppController()),
];
@凌驾
列表获取路由器=>[
路由器(Modular.initialRoute,模块:HomeModule()),
路由器('/reviews',模块:ReviewModule()),
];
@凌驾
Widget get bootstrap=>AppWidget();
静态注入get to=>Inject.of();
}
类HomeModule扩展了ChildModule{
@凌驾
列表获取绑定=>[
绑定((i)=>HomeController()),
];
@凌驾
列表获取路由器=>[
路由器(Modular.initialRoute,子:(\uz,args)=>HomePage()),
路由器(“注册”,子:(\uz,args)=>SignupPage()),
路由器(“signIn”,子:(\uz,args)=>SigninPage()),
];
静态注入get to=>Inject.of();
}
类ReviewModule扩展了ChildModule{
@凌驾
列表获取绑定=>[
绑定((i)=>ReviewController()),
];
@凌驾
列表获取路由器=>[
路由器(Modular.initialRoute,子:(\uz,args)=>ReviewPage()),
];
静态注入get to=>Inject.of();
}
类SearchModule扩展了ModuleWidget{
@凌驾
列表获取绑定=>[
绑定((i)=>SearchController()),
];
@凌驾
列表获取路由器=>[
路由器(Modular.initialRoute,子:(\uz,args)=>SearchPage()),
路由器(“教师”,子:(\uz,args)=>TeacherListPage()),
];
@凌驾
小部件获取视图=>SearchPage();
静态注入get to=>Inject.of();
}

解决方案是我错误地呼叫了路线

当我试图调用SearchModule模块内部的路由时,我没有找到正确的路径,也就是说,我按如下方式调用它:

<------------------------------------------------------------------------>

class AppModule extends MainModule {
  @override
  List<Bind> get binds => [
        Bind((i) => TeacherListController()),
        Bind((i) => ReviewsContentController()),
        Bind((i) => SigninController()),
        Bind((i) => SignupController()),
        Bind((i) => AppController()),
      ];

  @override
  List<Router> get routers => [
        Router(Modular.initialRoute, module: HomeModule()),
        Router('/reviews', module: ReviewsModule()),
      ];

  @override
  Widget get bootstrap => AppWidget();

  static Inject get to => Inject<AppModule>.of();
}

<------------------------------------------------------------------------>

class HomeModule extends ChildModule {
  @override
  List<Bind> get binds => [
        Bind((i) => HomeController()),
      ];

  @override
  List<Router> get routers => [
        Router(Modular.initialRoute, child: (_, args) => HomePage()),
        Router("signUp", child: (_, args) => SignupPage()),
        Router("signIn", child: (_, args) => SigninPage()),
      ];

  static Inject get to => Inject<HomeModule>.of();
}

<------------------------------------------------------------------------>

class ReviewsModule extends ChildModule {
  @override
  List<Bind> get binds => [
        Bind((i) => ReviewsController()),
      ];

  @override
  List<Router> get routers => [
        Router(Modular.initialRoute, child: (_, args) => ReviewsPage()),
      ];

  static Inject get to => Inject<ReviewsModule>.of();
}

<------------------------------------------------------------------------>

class SearchModule extends ModuleWidget {
  @override
  List<Bind> get binds => [
        Bind((i) => SearchController()),
      ];

  @override
  List<Router> get routers => [
        Router(Modular.initialRoute, child: (_, args) => SearchPage()),
        Router("teacher", child: (_, args) => TeacherListPage()),
      ];

  @override
  Widget get view => SearchPage();

  static Inject get to => Inject<SearchModule>.of();
}

<------------------------------------------------------------------------>
然而,当以这种方式调用它时,Module要做的第一件事是检查AppModule模块中是否存在此路由,如上所示,只有路由

Modular.to.pushNamed('/teacher')
因此,正确的导航方式是“进入”模块,直到您到达SearchModule模块,该模块有教师的路线。记住,我必须在ReviewModule模块中添加用于搜索的路由模块,该模块最终具有用于教师的路由

很快我不得不补充说

Router('/reviews', module: ReviewsModule()),
最后,正确的答案是

Router('/search', module: SearchModule()),

我没有读完整的代码,但你能确定这不是因为在某些地方,你使用的路径名称是
教师
,然后试图用名称推送它。
/teacher
。否定!但是tkx;)
Router('/search', module: SearchModule()),
Modular.to.pushNamed('/reviews/search/teacher')