routed_inertia 0.1.0 copy "routed_inertia: ^0.1.0" to clipboard
routed_inertia: ^0.1.0 copied to clipboard

Inertia.js integration for Routed that adds middleware, EngineContext helpers, SSR gateway wiring, and asset manifest support for hybrid apps.

Routed Inertia #

Routed integration for Inertia.js. This package wires the Inertia protocol into the Routed framework with middleware, EngineContext helpers, SSR support, and template rendering.

Install #

dart pub add routed_inertia

Setup #

Add the middleware to your engine and render pages with ctx.inertia.

import 'package:routed/routed.dart';
import 'package:routed/providers.dart';
import 'package:routed_inertia/routed_inertia.dart';

final engine = Engine(
  options: [
    withMiddleware([
      RoutedInertiaMiddleware(versionResolver: () => '1.0.0').call,
    ]),
  ],
);

engine.get('/dashboard', (ctx) {
  return ctx.inertia(
    'Dashboard',
    props: {'user': {'name': 'Ada'}},
  );
});

Config-Driven Setup #

Register the provider with the routed registry and enable it in config.

import 'package:routed/routed.dart';
import 'package:routed_inertia/routed_inertia.dart';

registerRoutedInertiaProvider(ProviderRegistry.instance);

If you need a custom version resolver, register the provider directly:

final engine = Engine(
  providers: [
    CoreServiceProvider.withLoader(
      ConfigLoader.yaml(configDirectory: 'config'),
    ),
    InertiaServiceProvider(versionResolver: () => '1.0.0'),
  ],
);
# config/http.yaml
providers:
  - routed.inertia
# config/inertia.yaml
version: "1.0.0"
root_view: "inertia/app"
history:
  encrypt: false
ssr:
  enabled: false
  url: "http://127.0.0.1:13714"
  ensure_bundle_exists: true
  runtime: "node"
assets:
  manifest_path: "build/manifest.json"
  entry: "resources/js/app.js"
  base_url: "/"
  hot_file: "public/hot"

When configured, ctx.inertia will pull defaults for version, root_view, history encryption, and SSR from this config.

When running Vite in dev mode, writing a hot file (like public/hot) lets the server auto-detect the dev server URL.

Shared Props #

engine.get('/shared', (ctx) {
  ctx.inertiaShare({'appName': 'Routed'});
  return ctx.inertia('Shared', props: {'user': 'Ada'});
});

Flash + Errors #

engine.post('/save', (ctx) {
  ctx.inertiaFlash('notice', 'Saved');
  ctx.inertiaErrors({'email': 'Required'});
  return ctx.redirect('/form');
});

Select error bags with X-Inertia-Error-Bag from the client.

SSR + Templates #

Render HTML through a template or a custom HTML builder, and optionally call the SSR gateway.

engine.get('/', (ctx) {
  return ctx.inertia(
    'Home',
    props: {'title': 'Hello'},
    templateName: 'inertia/app',
    ssrEnabled: true,
    ssrGateway: HttpSsrGateway(Uri.parse('http://localhost:13714')),
  );
});

Asset Manifest Helper #

Use the core manifest helper to render asset tags.

final manifest = await InertiaAssetManifest.load('build/manifest.json');
final tags = manifest.renderTags('resources/js/app.js', baseUrl: '/');

Inject the tags in your template or HTML builder.

Testing #

Use routed_testing to assert Inertia responses in integration tests.

response.assertInertia((page) {
  page.component('Dashboard').has('user.name');
});

Example App #

See packages/routed_inertia/example/README.md for a full React + Routed demo.

0
likes
150
points
10
downloads

Documentation

API reference

Publisher

verified publisherglenfordwilliams.com

Weekly Downloads

Inertia.js integration for Routed that adds middleware, EngineContext helpers, SSR gateway wiring, and asset manifest support for hybrid apps.

Homepage

License

MIT (license)

Dependencies

inertia_dart, json_schema_builder, meta, routed

More

Packages that depend on routed_inertia