devbar library

Classes

AddDevbarButton
AddDevbarKnobs
AddDevbarPanel
Serves source as a panel for as long as this widget is mounted.
DatabaseAdapter
One database, described by what flutterware may do with it.
DatabasePanelSource
Serves one DatabaseAdapter as a panel. Pure Dart — the tests drive this against a fake adapter with no sqlite anywhere; DatabasePlugin is the thin devbar wrapper that mounts it.
DatabasePlugin
Devbar
Wrapper around the application to add a hidden developer UI beneath it.
DevbarButtonHandle
DevbarDropdown<T>
DevbarIcon
DevbarPanelHandle
One panel being served, and the only way to stop.
DevbarPanels
Serves a panel for as long as the handle is held.
DevbarPanelSource
DevbarPlugin
DevbarState
DevbarTab
FeatureFlag<T>
FeatureFlagValue<T>
Knobs
The controls an entry declares by asking for them while it builds.
Toast

Enums

DatabaseSync
A sync engine the panel reads beyond the tables — what the app wrote that has not left yet, what arrived, and when — from the engine's own tables, through the same read-only DatabaseAdapter.query as everything else.
DevbarButtonPosition

Typedefs

DatabaseQuery = Future<List<Map<String, Object?>>> Function(String sql, List<Object?> args)
Runs one statement and answers with its rows. The adapter's query should be wired to a read path (sqlite_async's getAll runs on the read pool, so a write smuggled into it dies at the sqlite layer); execute is the write door and exists only when the app provides it.
DatabaseWatch = Stream<List<Map<String, Object?>>> Function(String sql)
A live query: emits the result rows now and again on every relevant change — sqlite_async's watch is the reference implementation.
DevbarPluginFactory = FutureOr<DevbarPlugin> Function(DevbarState state)

Exceptions / Errors

DatabaseUnavailable
What a database function throws when there is no database to reach — no one is signed in, the session is closing, the environment is switching.