Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

98 changes: 57 additions & 41 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,10 @@ packages:
dependency: "direct main"
description:
name: background_fetch
sha256: f5f0a5774cbe5e71ce62a9daf7f01007d07b3ac0c1fea1ecb131a3c5a273ca38
sha256: "360697885b0a0d3d3045ee1e1dcce19486319b8cb9df2d0ef07518f737bebb31"
url: "https://pub.dev"
source: hosted
version: "1.5.1"
version: "1.6.2"
bloc:
dependency: "direct main"
description:
Expand All @@ -133,10 +133,10 @@ packages:
dependency: "direct dev"
description:
name: bloc_lint
sha256: e40b578297488e5a263cbfa2180b186546f32da40ae8a57cad6aa68be5a46f79
sha256: "5bf965e3be5346fd6133e7f2eb4c845de3f2ae09eeae4d6622f400848b4aba71"
url: "https://pub.dev"
source: hosted
version: "0.4.0"
version: "0.4.1"
bloc_test:
dependency: "direct dev"
description:
Expand Down Expand Up @@ -181,10 +181,10 @@ packages:
dependency: "direct dev"
description:
name: build_runner
sha256: "521daf8d189deb79ba474e43a696b41c49fb3987818dbacf3308f1e03673a75e"
sha256: "4425a87d87d0d1303540f867994303f5b141ad2f6ecac7ac2cf8851f41c0cef1"
url: "https://pub.dev"
source: hosted
version: "2.13.1"
version: "2.14.0"
built_collection:
dependency: transitive
description:
Expand Down Expand Up @@ -281,14 +281,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.0"
code_builder:
dependency: transitive
description:
name: code_builder
sha256: "6a6cab2ba4680d6423f34a9b972a4c9a94ebe1b62ecec4e1a1f2cba91fd1319d"
url: "https://pub.dev"
source: hosted
version: "4.11.1"
collection:
dependency: "direct main"
description:
Expand All @@ -301,10 +293,10 @@ packages:
dependency: "direct main"
description:
name: connectivity_plus
sha256: b8fe52979ff12432ecf8f0abf6ff70410b1bb734be1c9e4f2f86807ad7166c79
sha256: "62ffa266d9a23b79fb3fcbc206afc00bb979417ba57b1324c546b5aab95ba057"
url: "https://pub.dev"
source: hosted
version: "7.1.0"
version: "7.1.1"
connectivity_plus_platform_interface:
dependency: transitive
description:
Expand Down Expand Up @@ -985,10 +977,10 @@ packages:
dependency: transitive
description:
name: hooks
sha256: e79ed1e8e1929bc6ecb6ec85f0cb519c887aa5b423705ded0d0f2d9226def388
sha256: "025f060e86d2d4c3c47b56e33caf7f93bf9283340f26d23424ebcfccf34f621e"
url: "https://pub.dev"
source: hosted
version: "1.0.2"
version: "1.0.3"
html:
dependency: "direct main"
description:
Expand Down Expand Up @@ -1066,10 +1058,10 @@ packages:
dependency: transitive
description:
name: image_picker_android
sha256: "9eae0cbd672549dacc18df855c2a23782afe4854ada5190b7d63b30ee0b0d3fd"
sha256: "66810af8e99b2657ee98e5c6f02064f69bb63f7a70e343937f70946c5f8c6622"
url: "https://pub.dev"
source: hosted
version: "0.8.13+15"
version: "0.8.13+16"
image_picker_for_web:
dependency: transitive
description:
Expand Down Expand Up @@ -1134,6 +1126,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.5"
jni:
dependency: transitive
description:
name: jni
sha256: c2230682d5bc2362c1c9e8d3c7f406d9cbba23ab3f2e203a025dd47e0fb2e68f
url: "https://pub.dev"
source: hosted
version: "1.0.0"
jni_flutter:
dependency: transitive
description:
name: jni_flutter
sha256: "8b59e590786050b1cd866677dddaf76b1ade5e7bc751abe04b86e84d379d3ba6"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
jovial_misc:
dependency: transitive
description:
Expand Down Expand Up @@ -1276,10 +1284,10 @@ packages:
dependency: "direct dev"
description:
name: mocktail
sha256: "890df3f9688106f25755f26b1c60589a92b3ab91a22b8b224947ad041bf172d8"
sha256: "5e1bf53cc7baa8062a33b84424deb61513858ea05c601b8509e683815b5914aa"
url: "https://pub.dev"
source: hosted
version: "1.0.4"
version: "1.0.5"
native_toolchain_c:
dependency: transitive
description:
Expand Down Expand Up @@ -1364,10 +1372,10 @@ packages:
dependency: transitive
description:
name: path_provider_android
sha256: "149441ca6e4f38193b2e004c0ca6376a3d11f51fa5a77552d8bd4d2b0c0912ba"
sha256: "69cbd515a62b94d32a7944f086b2f82b4ac40a1d45bebfc00813a430ab2dabcd"
url: "https://pub.dev"
source: hosted
version: "2.2.23"
version: "2.3.1"
path_provider_foundation:
dependency: transitive
description:
Expand Down Expand Up @@ -1568,6 +1576,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.1.0"
record_use:
dependency: transitive
description:
name: record_use
sha256: "2551bd8eecfe95d14ae75f6021ad0248be5c27f138c2ec12fcb52b500b3ba1ed"
url: "https://pub.dev"
source: hosted
version: "0.6.0"
rxdart:
dependency: transitive
description:
Expand Down Expand Up @@ -1745,10 +1761,10 @@ packages:
dependency: "direct dev"
description:
name: sqflite
sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03
sha256: "564cfed0746fe53140c23b70b308e045c3b31f17778f2f326ccb7d804ea0250a"
url: "https://pub.dev"
source: hosted
version: "2.4.2"
version: "2.4.2+1"
sqflite_android:
dependency: transitive
description:
Expand All @@ -1761,18 +1777,18 @@ packages:
dependency: transitive
description:
name: sqflite_common
sha256: "6ef422a4525ecc601db6c0a2233ff448c731307906e92cabc9ba292afaae16a6"
sha256: "5e8377564d95166761a968ed96104e0569b6b6cc611faac92a36ab8a169112c3"
url: "https://pub.dev"
source: hosted
version: "2.5.6"
version: "2.5.6+1"
sqflite_common_ffi:
dependency: "direct dev"
description:
name: sqflite_common_ffi
sha256: c59fcdc143839a77581f7a7c4de018e53682408903a0a0800b95ef2dc4033eff
sha256: cd0c7f7de39a08f2d54ef144d9058c46eca8461879aaa648025643455c1e5a20
url: "https://pub.dev"
source: hosted
version: "2.4.0+2"
version: "2.4.0+3"
sqflite_darwin:
dependency: transitive
description:
Expand Down Expand Up @@ -1801,10 +1817,10 @@ packages:
dependency: "direct main"
description:
name: sqlite3
sha256: caa693ad15a587a2b4fde093b728131a1827903872171089dedb16f7665d3a91
sha256: "56da3e13ed7d28a66f930aa2b2b29db6736a233f08283326e96321dd812030f5"
url: "https://pub.dev"
source: hosted
version: "3.2.0"
version: "3.3.1"
sqlite3_flutter_libs:
dependency: transitive
description:
Expand Down Expand Up @@ -1865,10 +1881,10 @@ packages:
dependency: transitive
description:
name: synchronized
sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0
sha256: "63896c27e81b28f8cb4e69ead0d3e8f03f1d1e5fc531a3e579cabed6a2c7c9e5"
url: "https://pub.dev"
source: hosted
version: "3.4.0"
version: "3.4.0+1"
term_glyph:
dependency: transitive
description:
Expand Down Expand Up @@ -2097,10 +2113,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60"
sha256: "046d3928e16fa4dc46e8350415661755ab759d9fc97fc21b5ab295f71e4f0499"
url: "https://pub.dev"
source: hosted
version: "15.0.2"
version: "15.1.0"
watcher:
dependency: transitive
description:
Expand Down Expand Up @@ -2153,10 +2169,10 @@ packages:
dependency: "direct main"
description:
name: webview_flutter_android
sha256: "0f7fcd2c86bf36bdcf94881f7941ce0cbc4f8d104b9fdcd5fcbef90e2199db76"
sha256: f560f57d0f529c1dcdaf4edc3a3217b099560622f9f4a10b6bdbb566553c61ea
url: "https://pub.dev"
source: hosted
version: "4.10.15"
version: "4.11.0"
webview_flutter_platform_interface:
dependency: transitive
description:
Expand All @@ -2169,10 +2185,10 @@ packages:
dependency: "direct main"
description:
name: webview_flutter_wkwebview
sha256: d7219cfabc6f5fc2032e0fa980ec36d71f308a35a823395af1abc34d9a2ede83
sha256: e15d8828e014291324a4d0cf6e272090167f4fa5673ffcf8fe446f4a4cd35861
url: "https://pub.dev"
source: hosted
version: "3.24.2"
version: "3.24.3"
win32:
dependency: transitive
description:
Expand Down Expand Up @@ -2230,5 +2246,5 @@ packages:
source: hosted
version: "3.1.2"
sdks:
dart: ">=3.10.4 <4.0.0"
dart: ">=3.11.0 <4.0.0"
flutter: ">=3.38.4"
14 changes: 14 additions & 0 deletions scripts/build-and-serve-web.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash

set -euo pipefail

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

PORT="${1:-8080}"

cd "${SCRIPT_DIR}/.."

flutter pub get
flutter gen-l10n
flutter build web
python3 "${SCRIPT_DIR}/serve-web.py" --port "${PORT}"
63 changes: 63 additions & 0 deletions scripts/serve-web.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#!/usr/bin/env python3

import argparse
import http.server
import os
import socket
import socketserver
from pathlib import Path


class CrossOriginRequestHandler(http.server.SimpleHTTPRequestHandler):
extensions_map = {
**http.server.SimpleHTTPRequestHandler.extensions_map,
".wasm": "application/wasm",
}

def end_headers(self) -> None:
self.send_header("Cross-Origin-Opener-Policy", "same-origin")
self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
super().end_headers()


def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Serve Flutter web output over the local network.")
parser.add_argument("--host", default="0.0.0.0", help="Host/interface to bind to. Defaults to 0.0.0.0.")
parser.add_argument("--port", type=int, default=8080, help="Port to serve on. Defaults to 8080.")
parser.add_argument("--dir", default="build/web", help="Directory to serve. Defaults to build/web.")
return parser.parse_args()


def local_ip() -> str:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
sock.connect(("8.8.8.8", 80))
return sock.getsockname()[0]
except OSError:
return "localhost"
finally:
sock.close()


def main() -> None:
args = parse_args()
directory = Path(args.dir).resolve()

if not directory.exists():
raise SystemExit(f"Directory does not exist: {directory}")

handler = lambda *handler_args, **handler_kwargs: CrossOriginRequestHandler( # noqa: E731
*handler_args,
directory=os.fspath(directory),
**handler_kwargs,
)

with socketserver.TCPServer((args.host, args.port), handler) as httpd:
print(f"Serving {directory}")
print(f"Local: http://localhost:{args.port}")
print(f"Network: http://{local_ip()}:{args.port}")
httpd.serve_forever()


if __name__ == "__main__":
main()
Loading
Loading