serveWatchedArtisanalAppInBrowser function
Future<WatchedBrowserArtisanalAppHost>
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,
Serves a watched, reloadable ArtisanalApp in the browser.
The returned host owns the browser server plus the optional file watcher and controller lifecycle.
Implementation
Future<WatchedBrowserArtisanalAppHost> 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'],
io.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 Function()? themeBuilder,
ImageAutoMode imageAutoMode = ImageAutoMode.sessionCapabilities,
runtime.ProgramOptions? options,
}) async {
final reloadController = controller ?? ReloadController();
final ownsController = controller == null;
final watcher = await ReloadFileWatcher.watch(
controller: reloadController,
roots: watchRoots,
mode: watchMode,
debounce: watchDebounce,
recursive: watchRecursive,
ignoreHidden: watchIgnoreHidden,
extensions: watchExtensions,
);
try {
final server = await serveReloadableArtisanalAppInBrowser(
controller: reloadController,
homeBuilder: homeBuilder,
address: address,
port: port,
pagePath: pagePath,
webSocketPath: webSocketPath,
browserTitle: browserTitle,
pageHtml: pageHtml,
title: title,
theme: theme,
darkTheme: darkTheme,
themeMode: themeMode,
themeBuilder: themeBuilder,
imageAutoMode: imageAutoMode,
options: options,
);
return WatchedBrowserArtisanalAppHost._(
server: server,
controller: reloadController,
watcher: watcher,
ownsController: ownsController,
);
} catch (_) {
await watcher.dispose();
if (ownsController) {
await reloadController.dispose();
}
rethrow;
}
}