Flutter getx:当我不使用导航器时,将每个绑定分开在自己的绑定中

Flutter getx: separate each binding inside own binding when I don't use navigator

我正在使用 getx。我的应用程序和 mainBinding 中有一个主页。在主页里面我有一个 Tabbar。主页有很多页面,任何页面都以这种方式加载:

child: TabBarView(
  controller: controller.tabController,
  physics: const NeverScrollableScrollPhysics(),
  children: [
    ReportOverallPage(),
    Container(),
    Container(),
    Container(),
    Container(),
    Container(),....
  ],
),

如您所见,未使用 Navigator 的 ReportOverallPage() 页面意味着未被推入堆栈区导航器,因此我无法为每个页面创建绑定。

每个页面都有自己的存储库和控制器。现在我必须在 MainBinding 中添加所有控制器和存储库。

class MainViewBinding implements Bindings {
  @override
  void dependencies() {
    Get.lazyPut<MainViewController>(() => MainViewController());

    Get.lazyPut<ReportController>(
        () => ReportController(Get.find<ReportRepository>()));
    Get.lazyPut<ReportRepository>(
        () => ReportRepositoryImp(Get.find<RestClient>()));
    .........
    
  }
}

现在 MainBainding 有一长串 Putted class.How 我可以在自己的绑定 class 中分隔每个绑定 class 吗?不使用导航器?

恐怕没有直接的方法可以做到这一点。因为绑定是特定于页面(或导航)的,所以您必须将依赖项与页面绑定。标签不是页面。因此,您不直接将依赖项绑定到它们。您需要将它们与包含页面绑定。

但一种解决方法是创建单独的绑定 class,然后在 MainBindingdependencies() 方法中调用每个绑定的 dependencies() 方法 class.