archbase_flutter_riverpod 0.2.0 copy "archbase_flutter_riverpod: ^0.2.0" to clipboard
archbase_flutter_riverpod: ^0.2.0 copied to clipboard

Adapter Riverpod para archbase_flutter — providers para os singletons do bootstrap, StreamProviders reativos e ArchbaseRiverpodNotifier base com guard().

archbase_flutter_riverpod #

Adapter Riverpod para a archbase_flutter.

O que tem aqui #

Providers globais (singletons do bootstrap) #

import 'package:archbase_flutter_riverpod/archbase_flutter_riverpod.dart';

final api = ref.read(archbaseApiProvider);
final auth = ref.read(archbaseAuthProvider);          // nullable
final config = ref.read(archbaseConfigProvider);
final storage = ref.read(archbaseStorageProvider);
final cache = ref.read(archbaseCacheProvider);
final syncQueue = ref.read(archbaseSyncQueueProvider);
final connectivity = ref.read(archbaseConnectivityServiceProvider);

Os providers leem direto dos singletons inicializados por ArchbaseBootstrap.init(...) — não recriam serviços.

Streams reativos para os ValueNotifiers da lib #

final isAuth = ref.watch(archbaseIsAuthenticatedProvider);   // AsyncValue<bool>
final user = ref.watch(archbaseCurrentUserProvider);         // AsyncValue<ArchbaseUser?>
final online = ref.watch(archbaseIsConnectedProvider);       // AsyncValue<bool>
final connType = ref.watch(archbaseConnectionTypeProvider);  // AsyncValue<ArchbaseConnectionType>
final syncStatus = ref.watch(archbaseSyncStatusProvider);    // AsyncValue<ArchbaseSyncStatus>

ArchbaseRiverpodNotifier<TState> #

Substitui StateNotifier<TState> quando você quer o guard() da ArchbaseController (loading + error handling automático):

class VisitasNotifier extends ArchbaseRiverpodNotifier<VisitasState> {
  VisitasNotifier(this._repo) : super(const VisitasState());
  final VisitasRepository _repo;

  Future<void> load() => guard(() async {
    final visitas = await _repo.list();
    state = state.copyWith(visitas: visitas);
  });
}

final visitasProvider =
    StateNotifierProvider<VisitasNotifier, VisitasState>(
  (ref) => VisitasNotifier(ref.read(visitasRepoProvider)),
);

TState precisa estender ArchbaseControllerState para ter isLoading e error no shape — e seu copyWith precisa aceitar clearError: true.

Setup #

dependencies:
  archbase_flutter:
    path: ../archbase-flutter
  archbase_flutter_riverpod:
    path: ../archbase-flutter/packages/archbase_flutter_riverpod
  flutter_riverpod: ^2.5.1
Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await ArchbaseBootstrap.init(config: ArchbaseConfig(...));
  // (configurar AuthService etc.)
  runApp(const ProviderScope(child: MyApp()));
}

Por que adapter em vez de embutir Riverpod na lib mãe #

A archbase_flutter é agnóstica de state mgmt por desenho — funciona com Riverpod, GetX, Provider, Bloc ou nada. Este pacote opcional adiciona ergonomia para quem escolheu Riverpod, sem forçar o resto.

0
likes
140
points
138
downloads

Documentation

Documentation
API reference

Publisher

unverified uploader

Weekly Downloads

Adapter Riverpod para archbase_flutter — providers para os singletons do bootstrap, StreamProviders reativos e ArchbaseRiverpodNotifier base com guard().

Homepage
Repository (GitHub)
View/report issues
Contributing

Topics

#riverpod #state-management #framework #providers

License

MIT (license)

Dependencies

archbase_flutter, flutter, flutter_riverpod

More

Packages that depend on archbase_flutter_riverpod