android-readme
Eric Windmill 3 weeks ago
commit f4e07204e1

@ -14,7 +14,7 @@ reduce redundant work.*
If you need help, consider asking for advice on the #hackers-devrel channel on [Discord]. If you need help, consider asking for advice on the #hackers-devrel channel on [Discord].
<!-- Links --> <!-- Links -->
[Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [Flutter Style Guide]: https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md
[CLA]: https://cla.developers.google.com/ [CLA]: https://cla.developers.google.com/
[Discord]: https://github.com/flutter/flutter/wiki/Chat [Discord]: https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md
[Contributors Guide]: https://github.com/flutter/samples/blob/main/CONTRIBUTING.md [Contributors Guide]: https://github.com/flutter/samples/blob/main/CONTRIBUTING.md

@ -26,7 +26,7 @@ jobs:
matrix: matrix:
os: [ubuntu-latest, macos-latest, windows-latest] os: [ubuntu-latest, macos-latest, windows-latest]
steps: steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 - uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9
with: with:
distribution: 'zulu' distribution: 'zulu'
@ -41,7 +41,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: github.repository == 'flutter/samples' if: github.repository == 'flutter/samples'
steps: steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 - uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9
with: with:
distribution: 'zulu' distribution: 'zulu'
@ -56,7 +56,7 @@ jobs:
runs-on: macos-latest runs-on: macos-latest
if: github.repository == 'flutter/samples' if: github.repository == 'flutter/samples'
steps: steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 - uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9
with: with:
distribution: 'zulu' distribution: 'zulu'

@ -16,7 +16,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with: with:
submodules: true submodules: true
fetch-depth: 0 fetch-depth: 0

@ -27,7 +27,7 @@ jobs:
flutter_version: [stable, beta, master] flutter_version: [stable, beta, master]
os: [ubuntu-latest, macos-latest, windows-latest] os: [ubuntu-latest, macos-latest, windows-latest]
steps: steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 - uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9
with: with:
distribution: 'zulu' distribution: 'zulu'
@ -40,7 +40,7 @@ jobs:
name: web/samples_index config check name: web/samples_index config check
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1
- run: | - run: |
dart pub get dart pub get
@ -50,7 +50,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: github.repository == 'flutter/samples' if: github.repository == 'flutter/samples'
steps: steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 - uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9
with: with:
distribution: 'zulu' distribution: 'zulu'
@ -63,7 +63,7 @@ jobs:
runs-on: macos-latest runs-on: macos-latest
if: github.repository == 'flutter/samples' if: github.repository == 'flutter/samples'
steps: steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 - uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9
with: with:
distribution: 'zulu' distribution: 'zulu'

@ -22,7 +22,7 @@ jobs:
steps: steps:
- name: "Checkout code" - name: "Checkout code"
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with: with:
persist-credentials: false persist-credentials: false
@ -50,6 +50,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard. # Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning" - name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251
with: with:
sarif_file: results.sarif sarif_file: results.sarif

@ -21,7 +21,7 @@ jobs:
# - beta # - beta
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with: with:
submodules: true submodules: true
fetch-depth: 0 fetch-depth: 0

@ -64,7 +64,7 @@ couple years keeping the repo tidy and running smooth.
Each app should: Each app should:
* Be designed to build against the current * Be designed to build against the current
[stable](https://github.com/flutter/flutter/wiki/Flutter-build-release-channels) [stable](https://github.com/flutter/flutter/blob/master/docs/releases/Flutter-build-release-channels.md)
release of the Flutter SDK. release of the Flutter SDK.
* Include the top level * Include the top level
[`analysis_options.yaml`](analysis_options.yaml) [`analysis_options.yaml`](analysis_options.yaml)
@ -84,7 +84,7 @@ Each app should:
In addition, sample code is, at the end of the day, still code. It should be In addition, sample code is, at the end of the day, still code. It should be
written with at least as much care as the Flutter code you'd find in the SDK written with at least as much care as the Flutter code you'd find in the SDK
itself. For that reason, most of the itself. For that reason, most of the
[Flutter style guide](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo) [Flutter style guide](https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md)
also applies to code in this repo. also applies to code in this repo.
### The `experimental` folder ### The `experimental` folder

@ -15,7 +15,7 @@ dependencies:
dev_dependencies: dev_dependencies:
analysis_defaults: analysis_defaults:
path: ../../../analysis_defaults path: ../../../analysis_defaults
pigeon: ">=11.0.0 <20.0.0" pigeon: ">=11.0.0 <21.0.0"
flutter_test: flutter_test:
sdk: flutter sdk: flutter

@ -251,6 +251,7 @@ class PromptScreen extends StatelessWidget {
child: MarketplaceButton( child: MarketplaceButton(
onPressed: () async { onPressed: () async {
await viewModel.submitPrompt().then((_) async { await viewModel.submitPrompt().then((_) async {
if (!context.mounted) return;
if (viewModel.recipe != null) { if (viewModel.recipe != null) {
bool? shouldSave = await showDialog<bool>( bool? shouldSave = await showDialog<bool>(
context: context, context: context,

@ -51,8 +51,7 @@ class _IconLoadingAnimatorState extends State<IconLoadingAnimator> {
void nextIcon() { void nextIcon() {
setState(() { setState(() {
currentIcon = currentIcon = widget.icons[rand.nextInt(widget.icons.length)];
widget.icons[rand.nextInt(widget.icons.length)];
currentColor = widget.colors[rand.nextInt(widget.colors.length)]; currentColor = widget.colors[rand.nextInt(widget.colors.length)];
}); });
} }

@ -52,7 +52,7 @@ Please see [macOS Signing and Security][macOS-security] for more detail.
[built_value]: https://pub.dev/packages/built_value [built_value]: https://pub.dev/packages/built_value
[file_chooser]: https://github.com/google/flutter-desktop-embedding/tree/master/plugins/file_chooser [file_chooser]: https://github.com/google/flutter-desktop-embedding/tree/master/plugins/file_chooser
[fluent_ui]: https://pub.dev/packages/fluent_ui [fluent_ui]: https://pub.dev/packages/fluent_ui
[flutter_channels]: https://github.com/flutter/flutter/wiki/Flutter-build-release-channels [flutter_channels]: https://github.com/flutter/flutter/blob/master/docs/releases/Flutter-build-release-channels.md
[http]: https://pub.dev/packages/http [http]: https://pub.dev/packages/http
[macOS-client]: https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_network_client [macOS-client]: https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_network_client
[macOS-read-write]: https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_files_user-selected_read-write [macOS-read-write]: https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_files_user-selected_read-write

@ -50,7 +50,7 @@ Please see [macOS Signing and Security][macOS-security] for more detail.
[built_collection]: https://pub.dev/packages/built_collection [built_collection]: https://pub.dev/packages/built_collection
[built_value]: https://pub.dev/packages/built_value [built_value]: https://pub.dev/packages/built_value
[file_chooser]: https://github.com/google/flutter-desktop-embedding/tree/master/plugins/file_chooser [file_chooser]: https://github.com/google/flutter-desktop-embedding/tree/master/plugins/file_chooser
[flutter_channels]: https://github.com/flutter/flutter/wiki/Flutter-build-release-channels [flutter_channels]: https://github.com/flutter/flutter/blob/master/docs/releases/Flutter-build-release-channels.md
[http]: https://pub.dev/packages/http [http]: https://pub.dev/packages/http
[macOS-client]: https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_network_client [macOS-client]: https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_network_client
[macOS-read-write]: https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_files_user-selected_read-write [macOS-read-write]: https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_files_user-selected_read-write

@ -7,12 +7,12 @@ environment:
sdk: ^3.4.0-0 sdk: ^3.4.0-0
dependencies: dependencies:
cloud_firestore: ^4.15.6 cloud_firestore: ^5.0.1
collection: ^1.16.0 collection: ^1.16.0
community_charts_flutter: ^1.0.2 community_charts_flutter: ^1.0.2
cupertino_icons: ^1.0.0 cupertino_icons: ^1.0.0
firebase_auth: ^4.0.1 firebase_auth: ^5.1.0
firebase_core: ^2.25.5 firebase_core: ^3.1.0
flutter: flutter:
sdk: flutter sdk: flutter
google_sign_in: ^6.0.0 google_sign_in: ^6.0.0

@ -8,8 +8,8 @@ environment:
dependencies: dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
cloud_firestore: ^4.6.0 cloud_firestore: ">=4.6.0 <6.0.0"
firebase_core: ^2.11.0 firebase_core: ">=2.11.0 <4.0.0"
google_maps_flutter: ^2.2.6 google_maps_flutter: ^2.2.6
google_maps_webservice: ^0.0.20-nullsafety.5 google_maps_webservice: ^0.0.20-nullsafety.5
location: ">=4.4.0 <7.0.0" location: ">=4.4.0 <7.0.0"

@ -23,8 +23,8 @@ dependencies:
# If you don't need one of the following dependencies, # If you don't need one of the following dependencies,
# delete the relevant line below, and get rid of any Dart code # delete the relevant line below, and get rid of any Dart code
# that references the dependency. # that references the dependency.
firebase_core: ^2.1.1 # Needed for Crashlytics below firebase_core: ^3.0.0 # Needed for Crashlytics below
firebase_crashlytics: ^3.4.16 # Error reporting firebase_crashlytics: ^4.0.0 # Error reporting
games_services: ^4.0.0 # Achievements and leaderboards games_services: ^4.0.0 # Achievements and leaderboards
google_mobile_ads: ^5.0.0 # Ads google_mobile_ads: ^5.0.0 # Ads
in_app_purchase: ^3.0.1 # In-app purchases in_app_purchase: ^3.0.1 # In-app purchases

@ -92,6 +92,7 @@ class _PerformancePageState extends State<PerformancePage> {
var snackBar = const SnackBar( var snackBar = const SnackBar(
content: Text('Main Isolate Done!'), content: Text('Main Isolate Done!'),
); );
if (!context.mounted) return;
ScaffoldMessenger.of(context).showSnackBar(snackBar); ScaffoldMessenger.of(context).showSnackBar(snackBar);
}); });
@ -106,6 +107,7 @@ class _PerformancePageState extends State<PerformancePage> {
var snackBar = const SnackBar( var snackBar = const SnackBar(
content: Text('Secondary Isolate Done!'), content: Text('Secondary Isolate Done!'),
); );
if (!context.mounted) return;
ScaffoldMessenger.of(context).showSnackBar(snackBar); ScaffoldMessenger.of(context).showSnackBar(snackBar);
}); });

@ -406,10 +406,10 @@ class _PlaceMapState extends State<PlaceMap> {
Future<BitmapDescriptor> _getPlaceMarkerIcon(PlaceCategory category) => Future<BitmapDescriptor> _getPlaceMarkerIcon(PlaceCategory category) =>
switch (category) { switch (category) {
PlaceCategory.favorite => BitmapDescriptor.fromAssetImage( PlaceCategory.favorite => BitmapDescriptor.asset(
createLocalImageConfiguration(context, size: const Size.square(32)), createLocalImageConfiguration(context, size: const Size.square(32)),
'assets/heart.png'), 'assets/heart.png'),
PlaceCategory.visited => BitmapDescriptor.fromAssetImage( PlaceCategory.visited => BitmapDescriptor.asset(
createLocalImageConfiguration(context, size: const Size.square(32)), createLocalImageConfiguration(context, size: const Size.square(32)),
'assets/visited.png'), 'assets/visited.png'),
PlaceCategory.wantToGo => Future.value(BitmapDescriptor.defaultMarker), PlaceCategory.wantToGo => Future.value(BitmapDescriptor.defaultMarker),

@ -14,6 +14,7 @@ declare -ar PROJECT_NAMES=(
"add_to_app/multiple_flutters/multiple_flutters_module" "add_to_app/multiple_flutters/multiple_flutters_module"
"add_to_app/plugin/flutter_module_using_plugin" "add_to_app/plugin/flutter_module_using_plugin"
"add_to_app/prebuilt_module/flutter_module" "add_to_app/prebuilt_module/flutter_module"
"ai_recipe_generation"
"analysis_defaults" "analysis_defaults"
"android_splash_screen" "android_splash_screen"
"animations" "animations"
@ -26,6 +27,7 @@ declare -ar PROJECT_NAMES=(
"deeplink_store_example" "deeplink_store_example"
"desktop_photo_search/fluent_ui" "desktop_photo_search/fluent_ui"
"desktop_photo_search/material" "desktop_photo_search/material"
"dynamic_theme"
"experimental/federated_plugin/federated_plugin" "experimental/federated_plugin/federated_plugin"
"experimental/federated_plugin/federated_plugin/example" "experimental/federated_plugin/federated_plugin/example"
"experimental/federated_plugin/federated_plugin_macos" "experimental/federated_plugin/federated_plugin_macos"
@ -42,11 +44,11 @@ declare -ar PROJECT_NAMES=(
"flutter_maps_firestore" "flutter_maps_firestore"
"form_app" "form_app"
"game_template" "game_template"
"gemini_tasks"
"google_maps" "google_maps"
"infinite_list" "infinite_list"
"ios_app_clip" "ios_app_clip"
# Don't use 'BuildContext's across async gaps. "isolate_example"
# "isolate_example"
"material_3_demo" "material_3_demo"
"navigation_and_routing" "navigation_and_routing"
"place_tracker" "place_tracker"

@ -14,8 +14,7 @@ declare -ar PROJECT_NAMES=(
"add_to_app/multiple_flutters/multiple_flutters_module" "add_to_app/multiple_flutters/multiple_flutters_module"
"add_to_app/plugin/flutter_module_using_plugin" "add_to_app/plugin/flutter_module_using_plugin"
"add_to_app/prebuilt_module/flutter_module" "add_to_app/prebuilt_module/flutter_module"
# Don't use 'BuildContext's across async gaps. "ai_recipe_generation"
# "ai_recipe_generation"
"analysis_defaults" "analysis_defaults"
"android_splash_screen" "android_splash_screen"
"animations" "animations"
@ -28,6 +27,7 @@ declare -ar PROJECT_NAMES=(
"deeplink_store_example" "deeplink_store_example"
"desktop_photo_search/fluent_ui" "desktop_photo_search/fluent_ui"
"desktop_photo_search/material" "desktop_photo_search/material"
"dynamic_theme"
"experimental/federated_plugin/federated_plugin" "experimental/federated_plugin/federated_plugin"
"experimental/federated_plugin/federated_plugin/example" "experimental/federated_plugin/federated_plugin/example"
"experimental/federated_plugin/federated_plugin_macos" "experimental/federated_plugin/federated_plugin_macos"
@ -44,11 +44,11 @@ declare -ar PROJECT_NAMES=(
"flutter_maps_firestore" "flutter_maps_firestore"
"form_app" "form_app"
"game_template" "game_template"
"gemini_tasks"
"google_maps" "google_maps"
"infinite_list" "infinite_list"
"ios_app_clip" "ios_app_clip"
# Don't use 'BuildContext's across async gaps. "isolate_example"
# "isolate_example"
"material_3_demo" "material_3_demo"
"navigation_and_routing" "navigation_and_routing"
"place_tracker" "place_tracker"

@ -7,7 +7,6 @@ environment:
sdk: ^3.4.0-0 sdk: ^3.4.0-0
dependencies: dependencies:
cupertino_icons: ^1.0.2
flutter: flutter:
sdk: flutter sdk: flutter

@ -162,7 +162,7 @@ h1 {
} }
#flutter_target.resize { #flutter_target.resize {
width: 480px; width: 480px;
height: 320px; height: 336px;
} }
#flutter_target.spin { animation: spin 6400ms ease-in-out infinite; } #flutter_target.spin { animation: spin 6400ms ease-in-out infinite; }
#flutter_target.shadow { position: relative; } #flutter_target.shadow { position: relative; }

@ -20,9 +20,6 @@
<title>Element embedding</title> <title>Element embedding</title>
<link rel="manifest" href="manifest.json" /> <link rel="manifest" href="manifest.json" />
<!-- This script adds the flutter initialization JS code -->
<script src="flutter.js" defer></script>
<link rel="stylesheet" type="text/css" href="css/style.css" /> <link rel="stylesheet" type="text/css" href="css/style.css" />
</head> </head>
<body> <body>
@ -81,17 +78,17 @@
</section> </section>
<script> <script>
window.addEventListener("load", function (ev) { {{flutter_js}}
// Embed flutter into div#flutter_target {{flutter_build_config}}
let target = document.querySelector("#flutter_target");
_flutter.loader.loadEntrypoint({ const target = document.getElementById('flutter_target');
_flutter.loader.load({
onEntrypointLoaded: async function (engineInitializer) { onEntrypointLoaded: async function (engineInitializer) {
let appRunner = await engineInitializer.initializeEngine({ const appRunner = await engineInitializer.initializeEngine({
hostElement: target, hostElement: target,
}); });
await appRunner.runApp(); await appRunner.runApp();
}, }
});
}); });
</script> </script>
<script src="js/demo-js-interop.js" defer></script> <script src="js/demo-js-interop.js" defer></script>

@ -11,24 +11,24 @@
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@angular/animations": "^17.3.3", "@angular/animations": "^18.0.1",
"@angular/cdk": "^17.3.3", "@angular/cdk": "^18.0.1",
"@angular/common": "^17.3.3", "@angular/common": "^18.0.1",
"@angular/compiler": "^17.3.3", "@angular/compiler": "^18.0.1",
"@angular/core": "^17.3.3", "@angular/core": "^18.0.1",
"@angular/forms": "^17.3.3", "@angular/forms": "^18.0.1",
"@angular/material": "^17.3.3", "@angular/material": "^18.0.1",
"@angular/platform-browser": "^17.3.3", "@angular/platform-browser": "^18.0.1",
"@angular/platform-browser-dynamic": "^17.3.3", "@angular/platform-browser-dynamic": "^18.0.1",
"@angular/router": "^17.3.3", "@angular/router": "^18.0.1",
"rxjs": "~7.8.1", "rxjs": "~7.8.1",
"tslib": "^2.6.2", "tslib": "^2.6.2",
"zone.js": "~0.14.4" "zone.js": "~0.14.6"
}, },
"devDependencies": { "devDependencies": {
"@angular-devkit/build-angular": "^17.3.3", "@angular-devkit/build-angular": "^18.0.2",
"@angular/cli": "~17.3.3", "@angular/cli": "~18.0.2",
"@angular/compiler-cli": "^17.3.3", "@angular/compiler-cli": "^18.0.1",
"@types/jasmine": "~5.1.0", "@types/jasmine": "~5.1.0",
"jasmine-core": "~5.1.1", "jasmine-core": "~5.1.1",
"karma": "~6.4.2", "karma": "~6.4.2",
@ -36,7 +36,7 @@
"karma-coverage": "~2.2.0", "karma-coverage": "~2.2.0",
"karma-jasmine": "~5.1.0", "karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "~2.1.0", "karma-jasmine-html-reporter": "~2.1.0",
"typescript": "~5.4.2" "typescript": "~5.4.5"
}, },
"sideEffects": false "sideEffects": false
} }

Loading…
Cancel
Save