shelf_flutter_app 1.0.0 copy "shelf_flutter_app: ^1.0.0" to clipboard
shelf_flutter_app: ^1.0.0 copied to clipboard

A flutter web integrator for shelf

Shelf Flutter App #

Serve a flutter web app with gzip and notfound routes middleware

Quick start #

First, run dart pub add shelf_flutter_app for your app. Then:

shelf #

import 'package:shelf_flutter_app/shelf_flutter_app.dart';

final staticApp = RunApp();

var server = await shelf_io.serve(staticApp.handler, 'localhost', 8080);
 

dart_frog #

import 'package:shelf_flutter_app/shelf_flutter_app.dart';

Handler middleware(Handler handler) {

    final staticApp = RunApp();

    return handler.use(
        fromShelfHandler(staticApp.handler),
    );
}

Full RunApp constructor #

  final staticApp = RunApp(
    runAppProperties: RunAppProperties(
      loggerConf: LoggerConf(
        logRequest: true,
        customLogger: (String msg, bool isError) {
          if (isError) {
            print('[ERROR] $msg');
          } else {
            print(msg);
          }
        },
      ),
      staticConf: const StaticConf(
        defaultDocument: 'index.html',
        fileSystemPath: 'app',
        onNotFoundUseDefaultDocumentMiddleware: true,
      ),
    ),
  );

you may need to disable notfoundMiddleware by default so that it does not break other routes, and add it later.

As dart_frog middleware example

final cascadeHandler = Cascade()
    .add(
    fromShelfHandler(
        staticApp.handler,
    ),
    )
    .add(handler)
    .handler
    .use(
    fromShelfMiddleware(
        staticApp.flutterAppOnNotFoundResponseMiddleware(),
    ),
    );