Создаваемое приложение представляет собой встроенное программное обеспечение, которое призвано помочь пользователям лучше придерживаться поставленных целей и придерживаться своих первоначальных устремлений.
Поскольку проект все еще находится на ранних стадиях, в настоящее время по мере необходимости создаются следующие структуры:
Обратитесь к некоторым официальным плагинам и объедините рекомендуемые каталоги в официальной документации getX:
На данный момент нет идеи выделения слоя состояния. Вот подробности каждого слоя:
При использовании GetX часто необходимо каждый раз вручную создавать экземпляр контроллера.final controller = Get.put(CounterController());
, если каждый интерфейс должен быть создан один раз, это немного хлопотно. Использование Binding может решить вышеуказанные проблемы, вы можете единообразно инициализировать все контроллеры, которым требуется управление состоянием при инициализации проекта, и использовать его напрямую.Get.find()
найти соответствующийGetxController
использовать.
- Маршрутизация, менеджер состояний и менеджер зависимостей могут быть полностью интегрированы
- Вот два способа его использования, и рекомендуется первый способ использования именованной маршрутизации getx.
- Без привязки это никак не повлияет на функциональность.
- Первый: использовать именованную маршрутизацию для привязки Binding
/// 入口类
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
/// 这里使用 GetMaterialApp
/// 初始化路由
return GetMaterialApp(
initialRoute: RouteConfig.onePage,
getPages: RouteConfig.getPages,
);
}
}
/// 路由配置
class RouteConfig {
static const String onePage = "/onePage";
static const String twoPage = "/twoPage";
static final List<GetPage> getPages = [
GetPage(
name: onePage,
page: () => const OnePage(),
binding: OnePageBinding(),
),
// GetPage(
// name: twoPage,
// page: () => TwoPage(),
// binding: TwoPageBinding(),
// ),
];
}
/// binding层
class OnePageBinding extends Bindings {
@override
void dependencies() {
Get.lazyPut(() => CounterController());
}
}
/// 逻辑层
class CounterController extends GetxController{
var count = 0;
/// 自增方法
void increase(){
count++;
update();
}
}
- Второй: используйте initialBinding для инициализации всех привязок
/// 入口类
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return GetMaterialApp(
/// 初始化所有的Binding
initialBinding: AllControllerBinding(),
home: const OnePage(),
);
}
}
/// 所有的Binding层
class AllControllerBinding extends Bindings {
@override
void dependencies() {
Get.lazyPut(() => CounterController());
///Get.lazyPut(() => OneController());
///Get.lazyPut(() => TwoController());
}
}