archbase_flutter_getx
Adapter GetX para a archbase_flutter.
O que tem aqui
ArchbaseGetBindings
Registra os singletons do ArchbaseBootstrap no container do Get para
que controllers possam fazer Get.find<T>():
GetMaterialApp(
initialBinding: ArchbaseGetBindings(),
getPages: [...],
);
Disponibiliza:
ArchbaseConfig,ArchbaseStorageService,ArchbaseCacheServiceArchbaseApiClient,ArchbaseConnectivityServiceArchbaseOfflineSyncQueue,ArchbaseAuthService(se setado)
ArchbaseGetController
GetxController base com guard() automatizando loading + erro:
class VisitasController extends ArchbaseGetController {
final visitas = <Visita>[].obs;
final _repo = Get.find<VisitasRepository>();
Future<void> load() => guard(() async {
visitas.assignAll(await _repo.list());
});
}
Expõe:
isLoading: RxBoolerror: RxnString+hasErrorguard<T>(action)— captura exceptions e mapeia para mensagem amigávelclearError()
ValueListenable<T>.asRx()
Bridge para usar ValueNotifiers dos services da lib com Obx:
class HomeController extends ArchbaseGetController {
late final isOnline =
Get.find<ArchbaseConnectivityService>().isConnected.asRx();
@override
void onClose() {
isOnline.disposeBridge();
super.onClose();
}
}
// No widget:
Obx(() => Text(controller.isOnline.value ? 'online' : 'offline'));
Lembre de chamar disposeBridge() no onClose do controller para
evitar listener pendurado.
Setup
dependencies:
archbase_flutter:
path: ../archbase-flutter
archbase_flutter_getx:
path: ../archbase-flutter/packages/archbase_flutter_getx
get: ^4.6.6
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await ArchbaseBootstrap.init(config: ArchbaseConfig(...));
// (configurar AuthService etc.)
runApp(GetMaterialApp(
initialBinding: ArchbaseGetBindings(),
home: const HomePage(),
));
}
Por que adapter em vez de embutir GetX na lib mãe
A archbase_flutter é agnóstica de state mgmt por desenho. Esse pacote
opcional dá ergonomia para quem escolheu GetX, sem forçar o resto.
Libraries
- archbase_flutter_getx
- Adapter GetX para
archbase_flutter.