搜索插件、代码仓与 APP 分类

插件详情v2.0.2+12

local_assets_server

提供本地资源的 HTTP 服务器

AndroidiOSmacOSWindowsLinux
近 30 天下载
8
喜欢数
36
Pub 分数
125

安装插件

flutter pub add local_assets_server

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个轻量级 HTTP 服务器,用于在 Flutter 应用中提供本地资源。它允许开发者通过 HTTP 从设备的本地存储中提供文件,适用于测试或在应用中嵌入静态内容(如 HTML、CSS 和 JavaScript)。非常适合需要本地 Web 服务器但无需外部依赖的场景。该服务器可在 Android、iOS、macOS、Windows 和 Linux 等多种平台上运行。

适合场景

  • 测试本地网页内容
  • 将静态文件嵌入应用程序
  • 开发离线网络功能
  • 提供自定义HTML页面
  • 调试资产交付

主要特点

  • 通过 HTTP 提供本地文件
  • 跨平台支持
  • 简单设置,配置最少
  • 可在多个操作系统上运行
  • 支持动态文件服务

适合对象

  • 需要本地HTTP服务的Flutter开发者
  • 开发过程中测试网络资源
  • 构建混合应用组件
  • 创建嵌入式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 项

源码仓库

使用此插件的项目

暂无相关数据。