搜尋套件、儲存庫與 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 項

原始碼儲存庫

使用此套件的專案

暫無相關資料。