flutter/packages/flutter_tools/templates
Jackson Gardner 3c30e3cb20
Flutter Web Bootstrapping Improvements (#144434)
This makes several changes to flutter web app bootstrapping.
* The build now produces a `flutter_bootstrap.js` file.
  * By default, this file does the basic streamlined startup of a flutter app with the service worker settings and no user configuration.
  * The user can also put a `flutter_bootstrap.js` file in the `web` subdirectory in the project directory which can have whatever custom bootstrapping logic they'd like to write instead. This file is also templated, and can use any of the tokens  that can be used with the `index.html` (with the exception of `{{flutter_bootstrap_js}}`, see below).
* Introduced a few new templating tokens for `index.html`:
  * `{{flutter_js}}` => inlines the entirety of `flutter.js`
  * `{{flutter_service_worker_version}}` => replaced directly by the service worker version. This can be used instead of the script that sets the `serviceWorkerVersion` local variable that we used to have by default.
  * `{{flutter_bootstrap_js}}` => inlines the entirety of `flutter_bootstrap.js` (this token obviously doesn't apply to `flutter_bootstrap.js` itself).
* Changed `IndexHtml` to be called `WebTemplate` instead, since it is used for more than just the index.html now.
* We now emit warnings at build time for certain deprecated flows:
  * Warn on the old service worker version pattern (i.e.`(const|var) serviceWorkerVersion = null`) and recommends using `{{flutter_service_worker_version}}` token instead
  * Warn on use of `FlutterLoader.loadEntrypoint` and recommend using `FlutterLoader.load` instead
  * Warn on manual loading of `flutter_service_worker.js`.
* The default `index.html` on `flutter create` now uses an async script tag with `flutter_bootstrap.js`.
2024-03-12 22:41:26 +00:00
..
app Bump cupertino_icons to 1.0.6 (#136962) 2023-11-16 21:15:04 +00:00
app_integration_test/integration_test Add an integration test to plugin template example (#117062) 2022-12-15 19:49:14 +00:00
app_shared Flutter Web Bootstrapping Improvements (#144434) 2024-03-12 22:41:26 +00:00
app_test_widget/test [flutter_tools] Use proper project name in templates (#96373) 2022-02-02 06:50:14 -08:00
cocoapods Set template and migrate apps to iOS 12 minimum (#140823) 2024-01-03 00:47:40 +00:00
module [flutter_tools] Update external link in Android manifest template (#144302) 2024-02-29 06:47:19 +00:00
package Bump flutter_lints to 3.0 (#136841) 2023-10-18 23:53:08 +00:00
package_ffi Modify plugin_ffi and package_ffi template (#143376) 2024-02-15 10:37:30 +00:00
plugin Android Gradle file templates: make it easier to convert them to Kotlin DSL in the future (#142146) 2024-02-15 23:42:13 +00:00
plugin_ffi Android Gradle file templates: make it easier to convert them to Kotlin DSL in the future (#142146) 2024-02-15 23:42:13 +00:00
plugin_shared Roll deps from dart-lang/native in templates (#142322) 2024-01-26 21:42:33 +00:00
skeleton Bump flutter_lints to 3.0 (#136841) 2023-10-18 23:53:08 +00:00
xcode/ios/custom_application_bundle Migrate Xcode projects last version checks to Xcode 15.1 (#140256) 2024-01-03 23:05:46 +00:00
README.md FFI plugins (#96225) 2022-01-26 23:44:45 +01:00
template_manifest.json Refactor "app plugin loader" Gradle Plugin so it can be applied using the declarative plugins {} block (#127897) 2023-09-22 16:31:48 +00:00

This directory contains templates for flutter create.

The *_shared subdirectories provide files for multiple templates.

  • app_shared for app and skeleton.
  • plugin_shared for (method channel) plugin and plugin_ffi.

For example, there are two app templates: app (the counter app) and skeleton (the more advanced list view/detail view app).

  ┌────────────┐
  │ app_shared │
  └──┬──────┬──┘
     │      │
     │      │
     ▼      ▼
┌─────┐    ┌──────────┐
│ app │    │ skeleton │
└─────┘    └──────────┘

Thanks to app_shared, the templates for app and skeleton can contain only the files that are specific to them alone, and the rest is automatically kept in sync.