Repository navigation
Expand file tree
/
Copy pathpubspec.yaml
More file actions
221 lines (215 loc) · 10.2 KB
/
Copy pathpubspec.yaml
File metadata and controls
221 lines (215 loc) · 10.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
name: dpip
description: "Disaster Prevention Information Platform"
publish_to: 'none'
# A placeholder, not the source of truth. `tool/release/version.sh` decides
# what a build is called and how it sorts, and CI passes both in with
# `--build-name` / `--build-number`, which override this on every platform. It
# stays here, and stays legal semver, only because `flutter pub get` parses it:
# `26.1` fails with "must have three numeric components" and `26w33a` does not
# parse at all.
version: 26.1.0+1
environment:
sdk: ^3.13.0
dependencies:
awesome_notifications: ^0.12.1
# The remote-push half of awesome. `awesome_notifications` alone handles only
# local notifications: its own source says "we do not chain to a
# previously-installed delegate … FCM is handled by awesome_notifications_fcm".
# Without it a server push reaches awesome's willPresent, is claimed as its own
# (the payload's `content` key is awesome's own model format), and then has no
# pipeline to display it — the app showed nothing in the foreground. The
# pre-rewrite app shipped this package; the rewrite dropped it.
awesome_notifications_fcm: ^0.12.0
cupertino_icons: ^1.0.8
# SHA-256 pins the downloaded ML intensity model to the exact file the
# golden tests were recorded against (lib/features/earthquake/data/
# ml_intensity_service.dart). Already in the lock through the SDK tooling.
crypto: ^3.0.6
dio: ^5.11.0
# Firebase pinned deliberately — a newer major bumps the min iOS target and
# breaks older-device compatibility. Do not upgrade without checking that.
# Pinned to the exact version (not `^`) so a plain `pub upgrade` can't drift
# the minor either.
firebase_core: 4.11.0
# Crash reports from snapshot and development builds only; a production build
# never turns collection on (lib/core/diagnostics/prerelease_diagnostics.dart).
# Pinned exactly, for the same reason as firebase_core: 5.2.4 is the release
# cut together with firebase_core 4.11.0 and asks for the same native SDK
# (firebase-ios-sdk 12.15.0 exact, Android BoM 34.15.0) with the same floors
# (iOS 15.0, minSdk 23). Every later 5.2.x requires a newer firebase_core —
# which is the bump the pin above exists to stop.
firebase_crashlytics: 5.2.4
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
flutter_markdown_plus: ^1.0.5
# ExpTechTW's fork, not pub.dev: the published package ships no Swift Package
# Manager support, and this app's iOS side has no CocoaPods setup (README →
# 參與開發). Flutter warns on every build and says it "will become an error in
# a future version" — and until then it quietly writes a Podfile back into the
# project through the dependency, which is the half of that warning nobody
# reads.
#
# The fork carries dlutton/flutter_tts#651 (@shivanshu877) and nothing else.
# Upstream has had three functionally identical SPM pull requests open since
# May with none merged, so waiting on it is not a plan. Pinned to the commit
# on the fork's master, like the maplibre fork below.
flutter_tts:
git:
url: https://github.com/ExpTechTW/flutter_tts.git
ref: a9cd6eda7feacd78c3fc288272a27edfd614fc30
# Direct because a MarkdownElementBuilder's signature takes an md.Element
# and flutter_markdown_plus does not re-export the package that defines it.
markdown: ^7.3.1
flutter_ntp: ^0.1.0
freezed_annotation: ^3.1.0
geolocator: ^14.0.3
fl_chart: ^1.2.0
go_router: ^17.3.0
in_app_purchase: ^3.3.0
intl: ^0.20.2
json_annotation: ^4.12.0
# Direct dep: MeshtasticClientImpl bridges the vendored package's
# `package:logging` records into the app Log.
logging: ^1.3.0
# ExpTech fork — HTTPS intercept + Dart tile-cache bridge + Android gzip fix
# + render lifecycle, batched layer updates, and compact tile-cache messages.
# Requires MapLibre Native 6.28.0, which the fork's Package.swift pins exactly.
# https://github.com/ExpTechTW/flutter-maplibre-gl
# Pin a commit (not floating `main`) so CI/`pub get` can't rewrite
# pubspec.lock. Copy `pubspec_overrides.example.yaml` for a local fork; the
# resulting `pubspec_overrides.yaml` stays gitignored, and any lockfile churn
# from using it must be discarded.
# The fork's controller.dart calls `setRenderPaused`, which exists only in
# the fork's interface/web packages — pub.dev's 0.27.1 lacks it. The
# overrides below force those two siblings (declared hosted ^0.27.1 inside
# the fork) to resolve from the same fork commit, so `setRenderPaused`
# exists on every platform.
maplibre_gl:
git:
url: https://github.com/ExpTechTW/flutter-maplibre-gl.git
path: maplibre_gl
ref: 310cc57a068814266402e437b1c767e9acc5ee69
# Direct (not just override) so tests can import the platform interface.
maplibre_gl_platform_interface:
git:
url: https://github.com/ExpTechTW/flutter-maplibre-gl.git
path: maplibre_gl_platform_interface
ref: 310cc57a068814266402e437b1c767e9acc5ee69
# LoRa mesh (Meshtastic) over BLE — off-grid emergency messaging. Requires
# Bluetooth + location permissions (Android manifest / iOS Info.plist below).
# Vendored (third_party/) with two upstream fixes: requestMtu is skipped off
# Android (CoreBluetooth negotiates MTU; flutter_blue_plus throws there) and
# text/JSON payloads decode as UTF-8 (fromCharCodes garbles CJK).
meshtastic_flutter:
path: third_party/meshtastic_flutter
# Version-highlight card content: each version's cards live here as Dart
# source (`lib/26.1/normal.dart`…). The app imports only the current version;
# older versions stay in the package as the archive and are never compiled.
dpip_release_highlights:
path: release_highlights
# Direct dep: MeshtasticClientImpl's device map holds flutter_blue_plus's
# BluetoothDevice (meshtastic_flutter doesn't re-export it).
flutter_blue_plus: ^1.36.8
# Direct dep: the impl requests Bluetooth/location permissions itself so a
# denial surfaces a typed failure with a settings path.
permission_handler: ^12.0.3
package_info_plus: ^10.2.0
path_provider: ^2.1.6
provider: ^6.1.5+1
# SQLite access, all files, via one connection pool per file. Replaces
# sqflite: every operation runs on a background isolate through sqlite3 FFI,
# so a cold-start lock contention window no longer fails opens on the UI
# thread, and WAL + busy_timeout (lockTimeout) ship as sane defaults.
#
# 0.14.5 is the floor because `close()` before it returned while connections
# were still open.
sqlite_async: ^0.14.5
# Not used directly — sqlite_async's pool. Declared only to hold a floor
# sqlite_async itself does not (it accepts ^0.2.7). Up to 0.2.9 every lease,
# readers included, was treated as the writer, so the update notification
# sent after each read could run against the writer's update and commit hooks
# on another thread and corrupt memory (simolus3/sqlite3.dart@00634a8). With
# connections opened without a mutex, that surfaced as native crashes inside
# SQLite itself: a garbage expression pointer in the parser on iOS, and
# `vdbeCommit` on Android. Do not lower this below 0.2.10.
sqlite3_connection_pool: ^0.2.10
# The synchronous SQLite API. Not used to open anything in app code — it is
# here for two types: the in-memory test helper wraps one handle with
# SqliteDatabase.singleConnection, and the location track's read-only open
# factory has to name `Database` to override sqlite_async's connection hook.
sqlite3: ^3.5.2
talker_flutter: ^5.1.9
url_launcher: ^6.3.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^6.0.0
# Virtual time for timer-driven state machines (the traceroute timeout).
fake_async: ^1.3.0
# Dart 3.13 (Flutter 3.47) makes `final` illegal on non-primary-constructor
# parameters — freezed 3.2.x emits `required final T x` for collections, so
# it can no longer compile. Only the 4.0 line (dev.3 today) supports 3.13;
# pinned as prerelease until it goes stable.
build_runner: ^2.16.0
freezed: ^4.0.0
json_serializable: ^6.14.1
url_launcher_platform_interface: ^2.3.2
dependency_overrides:
# Same fork commit as the direct git dependencies above — the fork's web
# package declares the interface as hosted ^0.27.1, which would resolve to
# pub.dev (no setRenderPaused) and break compilation. Inline overrides live
# in pubspec.yaml (not the gitignored pubspec_overrides.yaml) so CI's plain
# `pub get` resolves identically and pubspec.lock stays stable.
maplibre_gl_platform_interface:
git:
url: https://github.com/ExpTechTW/flutter-maplibre-gl.git
path: maplibre_gl_platform_interface
ref: 310cc57a068814266402e437b1c767e9acc5ee69
maplibre_gl_web:
git:
url: https://github.com/ExpTechTW/flutter-maplibre-gl.git
path: maplibre_gl_web
ref: 310cc57a068814266402e437b1c767e9acc5ee69
flutter:
config:
enable-swift-package-manager: true
uses-material-design: true
generate: true
shaders:
- shaders/sky/transmittance.frag
- shaders/sky/sky_lut.frag
- shaders/sky/sky_view.frag
- shaders/cloud/clouds.frag
- shaders/weather/sun_flare.frag
- shaders/weather/galaxy.frag
- shaders/weather/night.frag
- shaders/weather/night_field.frag
- shaders/weather/moon_display.frag
- shaders/weather/rain_on_glass.frag
- shaders/weather/lightning.frag
- shaders/weather/rainbow.frag
- shaders/weather/card_water.frag
assets:
- assets/DPIP.png
- assets/box.json.gz
- assets/weather/clouds/
- assets/weather/particles/
- assets/weather/sky/
- assets/location.json.gz
- assets/eew_points.json
- assets/map/town_boundaries.bin.gz
# The basemap a map with no network falls back to — Taiwan z0–9 and the
# world z0–2, 1.05 MiB. Built by tool/gen/basemap_seed.sh.
- assets/map/basemap_seed/
- assets/travel_time.json.gz
- assets/astro/
# Weather glyphs Flutter's bundled MaterialIcons font simply does not have —
# there is no rain icon in it at all. A 6.7 KB subset of Material Symbols
# Outlined (Apache-2.0), built by `tool/gen/weather_icons.py`, which also
# generates the codepoint constants so they can never drift from the font.
fonts:
- family: DpipWeatherIcons
fonts:
- asset: assets/fonts/DpipWeatherIcons.ttf