mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
## Summary `flutter build web --web-define=KEY=VALUE` silently ignored the `--web-define` flag. The option was registered via `usesWebDefineOption()` but the values were never extracted or passed through the build pipeline. `flutter run` was unaffected as it correctly calls `extractWebDefines()`. This PR threads web-define values through the full `flutter build web` chain: - **`build_web.dart`**: Call `extractWebDefines()` and pass the result to `buildWeb()`. - **`compile.dart`**: Add `kWebDefinePrefix` constant and `webDefines` parameter to `buildWeb()`, storing prefixed entries in `Environment.defines`. - **`web.dart`**: In `WebTemplatedFiles.build()`, extract web-define entries from the environment and pass them to both `withSubstitutions()` calls (bootstrap + index.html). Related to #175805. Fixes #182076 ## Test plan - Added 2 tests in `build_web_test.dart`: - Verifies `--web-define` values are passed to `Environment.defines` with `webDefine:` prefix. - Verifies builds succeed without `--web-define` and no prefixed entries are present. - Added 3 tests in `web_test.dart`: - `WebTemplatedFiles` substitutes web-define variables in `index.html`. - `WebTemplatedFiles` substitutes web-define variables in `flutter_bootstrap.js`. - `WebTemplatedFiles` works correctly with no web-define variables. - All existing tests in `build_web_test.dart` (24/24), `web_test.dart` (619/619), and `web_template_test.dart` (16/16) pass. --------- Co-authored-by: Mouad Debbar <mdebbar@google.com>