연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.
local_assets_server
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),
),
);
}
}
License
MIT