app library

Stable app-shell and runner entrypoint for terminal widget apps.

Prefer this library when you want the supported hosting surface without pulling in the full widget namespace:

  • WidgetApp
  • ArtisanalApp
  • local runners such as runWidgetApp(...) and runArtisanalApp(...)
  • reload helpers and watched/browser/socket host wrappers

Classes

ArtisanalApp
A high-level root shell for artisanal widget applications.
ReloadController
Controller for development-time subtree reloads.
ReloadFileWatcher
Watches one or more filesystem roots and forwards changes into a ReloadController.
ReloadHost
Rebuildable host for development-time reloads.
ReloadScope
Exposes a ReloadController to descendant widgets.
ReloadSignal
One reload signal emitted by ReloadController.
WatchedBrowserArtisanalAppHost
Browser host wrapper that owns the reload controller and optional watcher.
WatchedSocketArtisanalAppHost
Socket host wrapper that owns the reload controller and optional watcher.
WidgetApp
Runs a widget tree using an element hierarchy.

Enums

ReloadMode
The kind of reload requested through ReloadController.
ThemeMode
Controls how ArtisanalApp resolves its shell theme.

Constants

defaultWidgetProgramOptions → const ProgramOptions
Widget-friendly runtime defaults for runWidgetApp and runArtisanalApp.

Functions

runArtisanalApp(ArtisanalApp app, {ProgramOptions? options, ProgramHost? host, ImageAutoMode? imageAutoMode}) Future<void>
Runs an ArtisanalApp with widget-oriented runtime defaults.
runReloadableArtisanalApp({required ReloadWidgetBuilder homeBuilder, required ReloadController controller, String? title, Theme? theme, Theme? darkTheme, ThemeMode themeMode = ThemeMode.system, Theme themeBuilder()?, ProgramOptions? options, ProgramHost? host, ImageAutoMode? imageAutoMode}) Future<void>
Runs an ArtisanalApp with a reloadable home widget.
runReloadableWidgetApp(ReloadWidgetBuilder builder, {required ReloadController controller, ProgramOptions? options, ProgramHost? host, ImageAutoMode? imageAutoMode}) Future<void>
Runs a reloadable WidgetApp backed by ReloadHost.
runWatchedArtisanalApp({required ReloadWidgetBuilder homeBuilder, required Iterable<String> watchRoots, String? title, Theme? theme, Theme? darkTheme, ThemeMode themeMode = ThemeMode.system, Theme themeBuilder()?, ReloadController? controller, ReloadMode watchMode = ReloadMode.reload, Duration watchDebounce = const Duration(milliseconds: 150), bool watchRecursive = true, bool watchIgnoreHidden = true, Iterable<String> watchExtensions = const <String>['.dart'], ProgramOptions? options, ProgramHost? host, ImageAutoMode? imageAutoMode}) Future<void>
Runs an ArtisanalApp with a watched, reloadable home widget.
runWatchedWidgetApp(ReloadWidgetBuilder builder, {required Iterable<String> watchRoots, ReloadController? controller, ReloadMode watchMode = ReloadMode.reload, Duration watchDebounce = const Duration(milliseconds: 150), bool watchRecursive = true, bool watchIgnoreHidden = true, Iterable<String> watchExtensions = const <String>['.dart'], ProgramOptions? options, ProgramHost? host, ImageAutoMode? imageAutoMode}) Future<void>
Runs a reloadable WidgetApp and watches filesystem roots for changes.
runWidgetApp(WidgetApp app, {ProgramOptions? options, ProgramHost? host, ImageAutoMode? imageAutoMode}) Future<void>
Runs a WidgetApp with widget-oriented runtime defaults.
serveArtisanalAppInBrowser({required ArtisanalApp appBuilder(), InternetAddress? address, int port = 8080, String pagePath = '/', String webSocketPath = '/ws', String browserTitle = 'Artisanal Widget Host', String? pageHtml, ImageAutoMode imageAutoMode = ImageAutoMode.sessionCapabilities, ProgramOptions? options}) Future<BrowserTerminalHostServer>
Serves an ArtisanalApp in the browser through the shared websocket host.
serveArtisanalAppOnSocket({required ArtisanalApp appBuilder(), InternetAddress? address, int port = 2323, bool v6Only = false, bool shared = false, TerminalDimensions initialSize = (width: 80, height: 24), bool supportsAnsi = true, ColorProfile colorProfile = ColorProfile.trueColor, ImageAutoMode imageAutoMode = ImageAutoMode.sessionCapabilities, ProgramOptions? options}) Future<SocketTerminalHostServer>
Serves an ArtisanalApp on the reusable raw TCP socket host.
serveReloadableArtisanalAppInBrowser({required ReloadWidgetBuilder homeBuilder, required ReloadController controller, InternetAddress? address, int port = 8080, String pagePath = '/', String webSocketPath = '/ws', String browserTitle = 'Artisanal Widget Host', String? pageHtml, String? title, Theme? theme, Theme? darkTheme, ThemeMode themeMode = ThemeMode.system, Theme themeBuilder()?, ImageAutoMode imageAutoMode = ImageAutoMode.sessionCapabilities, ProgramOptions? options}) Future<BrowserTerminalHostServer>
Serves a reloadable ArtisanalApp in the browser.
serveReloadableArtisanalAppOnSocket({required ReloadWidgetBuilder homeBuilder, required ReloadController controller, InternetAddress? address, int port = 2323, bool v6Only = false, bool shared = false, TerminalDimensions initialSize = (width: 80, height: 24), bool supportsAnsi = true, ColorProfile colorProfile = ColorProfile.trueColor, String? title, Theme? theme, Theme? darkTheme, ThemeMode themeMode = ThemeMode.system, Theme themeBuilder()?, ImageAutoMode imageAutoMode = ImageAutoMode.sessionCapabilities, ProgramOptions? options}) Future<SocketTerminalHostServer>
Serves a reloadable ArtisanalApp on the raw socket host.
serveWatchedArtisanalAppInBrowser({required ReloadWidgetBuilder homeBuilder, required Iterable<String> watchRoots, ReloadController? controller, ReloadMode watchMode = ReloadMode.reload, Duration watchDebounce = const Duration(milliseconds: 150), bool watchRecursive = true, bool watchIgnoreHidden = true, Iterable<String> watchExtensions = const <String>['.dart'], InternetAddress? address, int port = 8080, String pagePath = '/', String webSocketPath = '/ws', String browserTitle = 'Artisanal Widget Host', String? pageHtml, String? title, Theme? theme, Theme? darkTheme, ThemeMode themeMode = ThemeMode.system, Theme themeBuilder()?, ImageAutoMode imageAutoMode = ImageAutoMode.sessionCapabilities, ProgramOptions? options}) Future<WatchedBrowserArtisanalAppHost>
Serves a watched, reloadable ArtisanalApp in the browser.
serveWatchedArtisanalAppOnSocket({required ReloadWidgetBuilder homeBuilder, required Iterable<String> watchRoots, ReloadController? controller, ReloadMode watchMode = ReloadMode.reload, Duration watchDebounce = const Duration(milliseconds: 150), bool watchRecursive = true, bool watchIgnoreHidden = true, Iterable<String> watchExtensions = const <String>['.dart'], InternetAddress? address, int port = 2323, bool v6Only = false, bool shared = false, TerminalDimensions initialSize = (width: 80, height: 24), bool supportsAnsi = true, ColorProfile colorProfile = ColorProfile.trueColor, String? title, Theme? theme, Theme? darkTheme, ThemeMode themeMode = ThemeMode.system, Theme themeBuilder()?, ImageAutoMode imageAutoMode = ImageAutoMode.sessionCapabilities, ProgramOptions? options}) Future<WatchedSocketArtisanalAppHost>
Serves a watched, reloadable ArtisanalApp on the raw socket host.
serveWidgetAppInBrowser({required WidgetApp appBuilder(), InternetAddress? address, int port = 8080, String pagePath = '/', String webSocketPath = '/ws', String browserTitle = 'Artisanal Widget Host', String? pageHtml, ImageAutoMode imageAutoMode = ImageAutoMode.sessionCapabilities, ProgramOptions? options}) Future<BrowserTerminalHostServer>
Serves a WidgetApp in the browser through the shared websocket host.
serveWidgetAppOnSocket({required WidgetApp appBuilder(), InternetAddress? address, int port = 2323, bool v6Only = false, bool shared = false, TerminalDimensions initialSize = (width: 80, height: 24), bool supportsAnsi = true, ColorProfile colorProfile = ColorProfile.trueColor, ImageAutoMode imageAutoMode = ImageAutoMode.sessionCapabilities, ProgramOptions? options}) Future<SocketTerminalHostServer>
Serves a WidgetApp on the reusable raw TCP socket host.

Typedefs

ReloadWidgetBuilder = Widget Function(BuildContext context, int revision)
Builder used by ReloadHost.