Search packages, repositories and app categories

Package detailsv2.0.2+12

local_assets_server

HTTP Server which serves local assets

AndroidiOSmacOSWindowsLinux
30-day downloads
8
Likes
36
Pub points
125

Install package

flutter pub add local_assets_server

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

A lightweight HTTP server for serving local assets in Flutter applications. It allows developers to serve files from the device's local storage over HTTP, useful for testing or embedding static content like HTML, CSS, and JavaScript within apps. Ideal for scenarios where a local web server is needed without external dependencies. The server runs on various platforms including Android, iOS, macOS, Windows, and Linux.

Use cases

  • Testing local web content
  • Embedding static files in apps
  • Developing offline web-based features
  • Serving custom HTML pages
  • Debugging asset delivery

Key features

  • Serves local files over HTTP
  • Cross-platform support
  • Simple setup with minimal configuration
  • Runs on multiple operating systems
  • Supports dynamic file serving

Suitable for

  • Flutter developers needing local HTTP services
  • Testing web assets during development
  • Building hybrid app components
  • Creating embedded web interfaces
  • Prototyping offline-capable apps

Considerations

  • Not intended for production use
  • Requires manual server management
  • Limited security features
  • Performance depends on device resources
  • File paths must be correctly specified

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

local_assets_server

lesnitsky.dev GitHub stars Twitter Follow

HTTP Server which serves local assets

Installation

pubspec.yaml:

dependencies:
  local_assets_server: ^2.0.2+10

Example

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:local_assets_server/local_assets_server.dart';
import 'package:webview_flutter/webview_flutter.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Local Assets Server Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Local Assets Server Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  final String title;

  MyHomePage({Key? key, required this.title}) : super(key: key);

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool isListening = false;
  String? address;
  int? port;
  WebViewController? controller;

  void _incrementCounter() {
    controller?.evaluateJavascript('window.increment()');
  }

  @override
  initState() {
    _initServer();
    super.initState();
  }

  _initServer() async {
    final server = new LocalAssetsServer(
      address: InternetAddress.loopbackIPv4,
      assetsBasePath: 'web',
      logger: DebugLogger(),
    );

    final address = await server.serve();

    setState(() {
      this.address = address.address;
      port = server.boundPort!;
      isListening = true;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: isListening
          ? WebView(
              debuggingEnabled: true,
              initialUrl: 'http://$address:$port',
              javascriptMode: JavascriptMode.unrestricted,
              onWebViewCreated: (c) {
                controller = c;
              },
            )
          : Center(child: CircularProgressIndicator()),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

License

MIT

Categories

Dependencies

Dependency list 2 items

Source repository

Projects using this package

No data available yet.