如何使用getx绑定



我有flutter应用程序,当我在另一个控制器中使用一个控制器时,我的应用程序中有许多控制器

所以有人建议我使用绑定,但当我使用binging和get.put方法时,它说我的控制器没有初始化,有人能建议我如何在flutter 中使用竞价吗

创建一个类并实现绑定

class HomeBinding implements Bindings {}

您的IDE将自动要求您覆盖";依赖关系";方法,您只需要点击灯,覆盖该方法,并插入您将在该路径上使用的所有类:

class HomeBinding implements Bindings {
@override
void dependencies() {
Get.lazyPut<HomeController>(() => HomeController());
Get.put<Service>(()=> Api());
}
}
class DetailsBinding implements Bindings {
@override
void dependencies() {
Get.lazyPut<DetailsController>(() => DetailsController());
}
}

现在,您只需要通知您的路由,您将使用该绑定来建立路由管理器、依赖项和状态之间的连接。

使用命名路线:

getPages: [
GetPage(
name: '/',
page: () => HomeView(),
binding: HomeBinding(),
),
GetPage(
name: '/details',
page: () => DetailsView(),
binding: DetailsBinding(),
),
];

使用正常路线:

Get.to(Home(), binding: HomeBinding());
Get.to(DetailsView(), binding: DetailsBinding())

在那里,你再也不用担心应用程序的内存管理了,Get会帮你做的。

Binding类是在调用路由时调用的,您可以创建一个";initialBinding,以插入将要创建的所有依赖项。

GetMaterialApp(
initialBinding: SampleBind(),
home: Home(),
);

绑定生成器

创建绑定的默认方式是创建一个实现绑定的类。但是,您也可以使用BindingsBuilder回调,这样您就可以简单地使用一个函数来实例化您想要的任何东西。

示例:

getPages: [
GetPage(
name: '/',
page: () => HomeView(),
binding: BindingsBuilder(() {
Get.lazyPut<ControllerX>(() => ControllerX());
Get.put<Service>(()=> Api());
}),
),
GetPage(
name: '/details',
page: () => DetailsView(),
binding: BindingsBuilder(() {
Get.lazyPut<DetailsController>(() => DetailsController());
}),
),
];

这样就可以避免为每个路由创建一个Binding类,从而使操作更加简单。

这两种方法都很好,我们希望您使用最适合您口味的方法。

SmartManagementGetX默认情况下会从内存中处理未使用的控制器,即使发生故障并且使用该控制器的小部件没有正确处理。这就是所谓的依赖关系管理的完整模式。但是,如果你想改变GetX控制类处理的方式,你有一个SmartManagement类,你可以设置不同的行为。

如何更改

如果你想更改这个配置(你通常不需要(,这是方法:

void main () {
runApp(
GetMaterialApp(
smartManagement: SmartManagement.onlyBuilders //here
home: Home(),
)
)
}

SmartManagement.full它是默认的。处置未使用且未设置为永久性的类。在大多数情况下,您都希望保持此配置不变。如果你是GetX的新手,那么不要改变这一点。

SmartManagement.onlyBuilders使用此选项,只有在init:中启动的控制器或使用Get.lazyPut((加载到绑定中的控制器才会被释放。

如果使用Get.put((或Get.putAsync((或任何其他方法,SmartManagement将无权排除此依赖项。

使用默认行为,即使是用";获取.放置"将被删除,与SmartManagement.onlyBuilders不同。

SmartManagement.keepFactory就像SmartManagement.full一样,当它不再使用时,它会删除它的依赖项。然而,它将保留它们的工厂,这意味着如果您再次需要该实例,它将重新创建依赖关系。

最新更新