パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v2.0.2+12

local_assets_server

ローカルアセットを提供するHTTPサーバー

AndroidiOSmacOSWindowsLinux
30日間ダウンロード
8
いいね数
36
Pub ポイント
125

パッケージをインストール

flutter pub add local_assets_server

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

Flutterアプリケーションでローカルアセットを提供するための軽量HTTPサーバーです。開発者がデバイスのローカルストレージからファイルをHTTP経由で提供できるようにし、テストやHTML、CSS、JavaScriptなどの静的コンテンツをアプリ内に埋め込む際に役立ちます。外部依存性なしにローカルWebサーバーが必要な状況に最適です。このサーバーはAndroid、iOS、macOS、Windows、Linuxなど、さまざまなプラットフォームで動作します。

用途

  • ローカルWebコンテンツのテスト
  • アプリに静的ファイルを埋め込む
  • オフラインWeb機能の開発
  • カスタムHTMLページの提供
  • アセット配信のデバッグ

主な機能

  • HTTP を通じてローカルファイルを提供する
  • クロスプラットフォーム対応
  • 最小限の構成での簡単なセットアップ
  • 複数のオペレーティングシステムで実行可能
  • 動的ファイル配信をサポート

適している対象

  • ローカルHTTPサービスが必要なFlutter開発者
  • 開発中にWebアセットをテストする
  • ハイブリッドアプリコンポーネントの構築
  • 埋め込みWebインターフェースの作成
  • オフライン対応アプリのプロトタイピング

注意事項

  • 本番環境での使用を想定していません
  • 手動でのサーバー管理が必要です
  • 制限されたセキュリティ機能
  • パフォーマンスはデバイスのリソースに依存します
  • ファイルパスは正しく指定する必要があります

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

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

カテゴリー

依存関係

依存関係一覧 2 件

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。