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