diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml index 4f859fbfe..f9e74bf01 100644 --- a/.github/workflows/beta.yml +++ b/.github/workflows/beta.yml @@ -27,7 +27,7 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 - - uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018 + - uses: actions/setup-java@2dfa2011c5b2a0f1489bf9e433881c92c1631f88 with: distribution: 'zulu' java-version: '17' @@ -43,7 +43,7 @@ jobs: # if: github.repository == 'flutter/samples' # steps: # - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 - # - uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018 + # - uses: actions/setup-java@2dfa2011c5b2a0f1489bf9e433881c92c1631f88 # with: # distribution: 'zulu' # java-version: '17' @@ -59,7 +59,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 - - uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018 + - uses: actions/setup-java@2dfa2011c5b2a0f1489bf9e433881c92c1631f88 with: distribution: 'zulu' java-version: '17' diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 808c18581..c10b7f936 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,7 +28,7 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 - - uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018 + - uses: actions/setup-java@2dfa2011c5b2a0f1489bf9e433881c92c1631f88 with: distribution: 'zulu' java-version: '17' @@ -53,7 +53,7 @@ jobs: # if: github.repository == 'flutter/samples' # steps: # - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 - # - uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018 + # - uses: actions/setup-java@2dfa2011c5b2a0f1489bf9e433881c92c1631f88 # with: # distribution: 'zulu' # java-version: '17' @@ -67,7 +67,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 - - uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018 + - uses: actions/setup-java@2dfa2011c5b2a0f1489bf9e433881c92c1631f88 with: distribution: 'zulu' java-version: '17' diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml deleted file mode 100644 index 0c96a21be..000000000 --- a/.github/workflows/scorecards-analysis.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: Scorecards supply-chain security -on: - # Only the default branch is supported. - branch_protection_rule: - push: - branches: [ main ] - -# Declare default permissions as read only. -permissions: read-all - -jobs: - analysis: - name: Scorecards analysis - runs-on: ubuntu-latest - if: ${{ github.repository == 'flutter/samples' }} - permissions: - # Needed to upload the results to code-scanning dashboard. - security-events: write - actions: read - contents: read - id-token: write - - steps: - - name: "Checkout code" - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 - with: - persist-credentials: false - - - name: "Run analysis" - uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 - with: - results_file: results.sarif - results_format: sarif - # Read-only PAT token. To create it, - # follow the steps in https://github.com/ossf/scorecard-action#pat-token-creation. - repo_token: ${{ secrets.SCORECARD_READ_TOKEN }} - # Publish the results to enable scorecard badges. For more details, see - # https://github.com/ossf/scorecard-action#publishing-results. - # For private repositories, `publish_results` will automatically be set to `false`, - # regardless of the value entered here. - publish_results: true - - # Upload the results as artifacts (optional). - - name: "Upload artifact" - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 - with: - name: SARIF file - path: results.sarif - retention-days: 5 - - # Upload the results to GitHub's code scanning dashboard. - - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@4dd16135b69a43b6c8efb853346f8437d92d3c93 - with: - sarif_file: results.sarif diff --git a/experimental/pedometer/pubspec.yaml b/experimental/pedometer/pubspec.yaml index fef058d7f..466939435 100644 --- a/experimental/pedometer/pubspec.yaml +++ b/experimental/pedometer/pubspec.yaml @@ -14,7 +14,7 @@ dependencies: ffi: ^2.1.2 dev_dependencies: - ffigen: ^13.0.0 + ffigen: ^14.0.0 jnigen: ^0.11.0 flutter_test: sdk: flutter diff --git a/game_template/pubspec.yaml b/game_template/pubspec.yaml index 2d960716f..84ba04fff 100644 --- a/game_template/pubspec.yaml +++ b/game_template/pubspec.yaml @@ -33,7 +33,7 @@ dev_dependencies: flutter_lints: ^4.0.0 flutter_test: sdk: flutter - flutter_launcher_icons: ^0.13.0 + flutter_launcher_icons: ^0.14.0 test: ^1.19.0 flutter: diff --git a/material_3_demo/android/app/src/main/kotlin/com/example/material_3_demo/MainActivity.kt b/material_3_demo/android/app/src/main/kotlin/com/example/material_3_demo/MainActivity.kt index db3a75c76..738e2951e 100644 --- a/material_3_demo/android/app/src/main/kotlin/com/example/material_3_demo/MainActivity.kt +++ b/material_3_demo/android/app/src/main/kotlin/com/example/material_3_demo/MainActivity.kt @@ -1,6 +1,14 @@ package com.example.material_3_demo import io.flutter.embedding.android.FlutterActivity +import android.os.Bundle +import androidx.core.view.WindowCompat class MainActivity: FlutterActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + WindowCompat.setDecorFitsSystemWindows(window, false) + } + } diff --git a/material_3_demo/android/app/src/main/res/values/styles.xml b/material_3_demo/android/app/src/main/res/values/styles.xml index cb1ef8805..e0ae24bde 100644 --- a/material_3_demo/android/app/src/main/res/values/styles.xml +++ b/material_3_demo/android/app/src/main/res/values/styles.xml @@ -14,5 +14,19 @@ This Theme is only used starting with V2 of Flutter's Android embedding. --> diff --git a/material_3_demo/lib/color_box.dart b/material_3_demo/lib/color_box.dart new file mode 100644 index 000000000..e150d18ab --- /dev/null +++ b/material_3_demo/lib/color_box.dart @@ -0,0 +1,93 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +class ColorBox extends StatefulWidget { + const ColorBox( + {super.key, + required this.label, + required this.tone, + required this.color, + required this.onColor, + required this.height, + required this.width, + this.displayPaletteInfo = false}); + + final String label; + final String tone; + final Color color, onColor; + final double height, width; + final bool displayPaletteInfo; + + @override + State createState() => _ColorBoxState(); +} + +class _ColorBoxState extends State { + bool hovered = false; + + @override + Widget build(BuildContext context) { + final fonts = Theme.of(context).textTheme; + return MouseRegion( + onEnter: (_) { + if (mounted) setState(() => hovered = true); + }, + onExit: (_) { + if (mounted) setState(() => hovered = false); + }, + child: Container( + color: widget.color, + height: widget.height, + width: widget.width, + child: DefaultTextStyle( + style: fonts.labelSmall!.copyWith(color: widget.onColor), + child: Stack( + children: [ + Positioned( + top: 10, + left: 10, + child: Text(widget.label), + ), + Positioned( + bottom: 10, + right: 10, + child: Text(widget.displayPaletteInfo ? widget.tone : ''), + ), + if (hovered) + Positioned( + top: 0, + right: 0, + child: IconButton( + padding: EdgeInsets.zero, + color: widget.onColor, + tooltip: 'Copy hex color', + icon: const Icon(Icons.copy, size: 24), + onPressed: () async { + final messenger = ScaffoldMessenger.of(context); + // Copy color as hex to clipboard + String hex = '#'; + final c = widget.color; + // Will change from int 0-255 to double 0.0-1.0 in 3.26+ + // The properties also change from red/green/blue to r/g/b + // hex += (c.[r g b] * 255.0).round().toRadixString(16).padLeft(2, '0'); + hex += c.red.toRadixString(16).padLeft(2, '0'); + hex += c.green.toRadixString(16).padLeft(2, '0'); + hex += c.blue.toRadixString(16).padLeft(2, '0'); + final data = ClipboardData(text: hex); + await Clipboard.setData(data); + messenger.hideCurrentSnackBar(); + messenger.showSnackBar( + SnackBar( + content: Text('Copied $hex to clipboard'), + ), + ); + }, + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/material_3_demo/lib/color_palettes_screen.dart b/material_3_demo/lib/color_palettes_screen.dart index a3462c454..56aca010c 100644 --- a/material_3_demo/lib/color_palettes_screen.dart +++ b/material_3_demo/lib/color_palettes_screen.dart @@ -4,6 +4,7 @@ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; +import 'package:material_3_demo/scheme.dart'; import 'package:url_launcher/url_launcher.dart'; const Widget divider = SizedBox(height: 10); @@ -11,7 +12,7 @@ const Widget divider = SizedBox(height: 10); // If screen content width is greater or equal to this value, the light and dark // color schemes will be displayed in a column. Otherwise, they will // be displayed in a row. -const double narrowScreenWidthThreshold = 400; +const double narrowScreenWidthThreshold = 500; class ColorPalettesScreen extends StatelessWidget { const ColorPalettesScreen({super.key}); @@ -94,32 +95,32 @@ class ColorPalettesScreen extends StatelessWidget { ), ); } else { + Color seed = Theme.of(context).colorScheme.primary; + ColorScheme lightScheme = ColorScheme.fromSeed( + seedColor: seed, brightness: Brightness.light); + ColorScheme darkScheme = ColorScheme.fromSeed( + seedColor: seed, brightness: Brightness.dark); return SingleChildScrollView( child: Padding( - padding: const EdgeInsets.only(top: 5), + padding: const EdgeInsets.all(8), child: Column( children: [ - dynamicColorNotice(), - Row( - children: [ - Expanded( - child: Column( - children: [ - schemeLabel('Light ColorScheme'), - schemeView(lightTheme), - ], - ), - ), - Expanded( - child: Column( - children: [ - schemeLabel('Dark ColorScheme'), - schemeView(darkTheme), - ], - ), - ), - ], + SchemePreview( + label: "Light ColorScheme", + scheme: lightScheme, + brightness: Brightness.light, + contrast: 1.0, + colorMatch: false, ), + const SizedBox(height: 16), + SchemePreview( + label: "Dark ColorScheme", + scheme: darkScheme, + brightness: Brightness.dark, + contrast: 1.0, + colorMatch: false, + ), + const SizedBox(height: 16), ], ), ), diff --git a/material_3_demo/lib/scheme.dart b/material_3_demo/lib/scheme.dart new file mode 100644 index 000000000..4cb30045b --- /dev/null +++ b/material_3_demo/lib/scheme.dart @@ -0,0 +1,417 @@ +import 'package:flutter/material.dart'; + +import '../color_box.dart'; + +class SchemePreview extends StatefulWidget { + const SchemePreview({ + super.key, + required this.label, + required this.scheme, + required this.brightness, + required this.colorMatch, + required this.contrast, + }); + + final String label; + final ColorScheme scheme; + final Brightness brightness; + final bool colorMatch; + final double contrast; + + @override + State createState() => _SchemePreviewState(); +} + +class _SchemePreviewState extends State { + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final fonts = theme.textTheme; + final colors = theme.colorScheme; + final dark = widget.brightness == Brightness.dark; + + final scheme = widget.scheme; + + return Theme( + data: theme.copyWith(colorScheme: scheme), + child: FittedBox( + fit: BoxFit.fitWidth, + child: Container( + width: 902, + decoration: BoxDecoration( + color: scheme.surface, + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: theme.brightness == widget.brightness + ? colors.outlineVariant + : Colors.transparent, + ), + ), + padding: const EdgeInsets.only( + top: 16, + left: 16, + right: 16, + ), + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Expanded( + child: Text( + widget.label, + style: fonts.titleMedium!.copyWith( + color: scheme.onSurface, + fontWeight: FontWeight.bold, + ), + textAlign: TextAlign.start, + ), + ), + ], + ), + const SizedBox(height: 20), + Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Column( + mainAxisSize: MainAxisSize.min, + children: [ + ColorBox( + label: 'Primary', + tone: dark ? 'P-80' : 'P-40', + color: scheme.primary, + onColor: scheme.onPrimary, + height: 87, + width: 208, + ), + ColorBox( + label: 'On Primary', + tone: dark ? 'P-20' : 'P-100', + color: scheme.onPrimary, + onColor: scheme.primary, + height: 40, + width: 208, + ), + const SizedBox(height: 5), + ColorBox( + label: 'Primary Container', + tone: dark ? 'P-30' : 'P-90', + color: scheme.primaryContainer, + onColor: scheme.onPrimaryContainer, + height: 87, + width: 208, + ), + ColorBox( + label: 'On Primary Container', + tone: dark ? 'P-90' : 'P-10', + color: scheme.onPrimaryContainer, + onColor: scheme.primaryContainer, + height: 40, + width: 208, + ), + ], + ), + const SizedBox(width: 5), + Column( + mainAxisSize: MainAxisSize.min, + children: [ + ColorBox( + label: 'Secondary', + tone: dark ? 'S-80' : 'S-40', + color: scheme.secondary, + onColor: scheme.onSecondary, + height: 87, + width: 208, + ), + ColorBox( + label: 'On Secondary', + tone: dark ? 'S-20' : 'S-100', + color: scheme.onSecondary, + onColor: scheme.secondary, + height: 40, + width: 208, + ), + const SizedBox(height: 5), + ColorBox( + label: 'Secondary Container', + tone: dark ? 'S-30' : 'S-90', + color: scheme.secondaryContainer, + onColor: scheme.onSecondaryContainer, + height: 87, + width: 208, + ), + ColorBox( + label: 'On Secondary Container', + tone: dark ? 'S-90' : 'S-10', + color: scheme.onSecondaryContainer, + onColor: scheme.secondaryContainer, + height: 40, + width: 208, + ), + ], + ), + const SizedBox(width: 5), + Column( + mainAxisSize: MainAxisSize.min, + children: [ + ColorBox( + label: 'Tertiary', + tone: dark ? 'T-80' : 'T-40', + color: scheme.tertiary, + onColor: scheme.onTertiary, + height: 87, + width: 208, + ), + ColorBox( + label: 'On Tertiary', + tone: dark ? 'T-20' : 'T-100', + color: scheme.onTertiary, + onColor: scheme.tertiary, + height: 40, + width: 208, + ), + const SizedBox(height: 5), + ColorBox( + label: 'Tertiary Container', + tone: dark ? 'T-30' : 'T-90', + color: scheme.tertiaryContainer, + onColor: scheme.onTertiaryContainer, + height: 87, + width: 208, + ), + ColorBox( + label: 'On Tertiary Container', + tone: dark ? 'T-90' : 'T-10', + color: scheme.onTertiaryContainer, + onColor: scheme.tertiaryContainer, + height: 40, + width: 208, + ), + ], + ), + ], + ), + const SizedBox(height: 20), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + ColorBox( + label: 'Surface Dim', + tone: dark ? 'N-6' : 'N-87', + color: scheme.surfaceDim, + onColor: scheme.onSurface, + height: 105, + width: 211.45, + ), + ColorBox( + label: 'Surface', + tone: dark ? 'N-6' : 'N-98', + color: scheme.surface, + onColor: scheme.onSurface, + height: 105, + width: 211.45, + ), + ColorBox( + label: 'Surface Bright', + tone: dark ? 'N-24' : 'N-98', + color: scheme.surfaceBright, + onColor: scheme.onSurface, + height: 105, + width: 211.45, + ), + ], + ), + const SizedBox(height: 5), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + ColorBox( + label: 'Surf. Container\nLowest', + tone: dark ? 'N-4' : 'N-100', + color: scheme.surfaceContainerLowest, + onColor: scheme.onSurface, + height: 105, + width: 126.87, + ), + ColorBox( + label: 'Surf. Container\nLow', + tone: dark ? 'N-10' : 'N-96', + color: scheme.surfaceContainerLow, + onColor: scheme.onSurface, + height: 105, + width: 126.87, + ), + ColorBox( + label: 'Surf. Container', + tone: dark ? 'N-12' : 'N-94', + color: scheme.surfaceContainer, + onColor: scheme.onSurface, + height: 105, + width: 126.87, + ), + ColorBox( + label: 'Surf. Container\nHigh', + tone: dark ? 'N-17' : 'N-92', + color: scheme.surfaceContainerHigh, + onColor: scheme.onSurface, + height: 105, + width: 126.87, + ), + ColorBox( + label: 'Surf. Container\nHighest', + tone: dark ? 'N-24' : 'N-90', + color: scheme.surfaceContainerHighest, + onColor: scheme.onSurface, + height: 105, + width: 126.87, + ), + ], + ), + const SizedBox(height: 5), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + ColorBox( + label: 'On Surface', + tone: dark ? 'N-90' : 'N-10', + color: scheme.onSurface, + onColor: scheme.surface, + height: 40, + width: 158.59, + ), + ColorBox( + label: 'On Surface Var.', + tone: dark ? 'NV-90' : 'NV-30', + color: scheme.onSurfaceVariant, + onColor: scheme.surfaceContainerHighest, + height: 40, + width: 158.59, + ), + ColorBox( + label: 'Outline', + tone: dark ? 'NV-60' : 'NV-50', + color: scheme.outline, + onColor: scheme.surface, + height: 40, + width: 158.59, + ), + ColorBox( + label: 'Outline Variant', + tone: dark ? 'NV-30' : 'NV-80', + color: scheme.outlineVariant, + onColor: scheme.onSurface, + height: 40, + width: 158.59, + ), + ], + ), + ], + ), + const SizedBox(width: 20), + Column( + mainAxisSize: MainAxisSize.min, + children: [ + ColorBox( + label: 'Error', + tone: dark ? 'E-80' : 'E-40', + color: scheme.error, + onColor: scheme.onError, + height: 87, + width: 208, + ), + ColorBox( + label: 'On Error', + tone: dark ? 'E-20' : 'E-100', + color: scheme.onError, + onColor: scheme.error, + height: 40, + width: 208, + ), + const SizedBox(height: 5), + ColorBox( + label: 'Error Container', + tone: dark ? 'E-30' : 'E-90', + color: scheme.errorContainer, + onColor: scheme.onErrorContainer, + height: 87, + width: 208, + ), + ColorBox( + label: 'On Error Container', + tone: dark ? 'E-90' : 'E-10', + color: scheme.onErrorContainer, + onColor: scheme.errorContainer, + height: 40, + width: 208, + ), + const SizedBox(height: 20), + ColorBox( + label: 'Inverse Surface', + tone: dark ? 'N-90' : 'N-20', + color: scheme.inverseSurface, + onColor: scheme.onInverseSurface, + height: 120, + width: 208, + ), + ColorBox( + label: 'Inverse On Surface', + tone: dark ? 'N-20' : 'N-95', + color: scheme.onInverseSurface, + onColor: scheme.inverseSurface, + height: 40, + width: 208, + ), + const SizedBox(height: 5), + ColorBox( + label: 'Inverse Primary', + tone: dark ? 'P-40' : 'P-80', + color: scheme.inversePrimary, + onColor: scheme.onSurface, + height: 40, + width: 208, + ), + const SizedBox(height: 16), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + ColorBox( + label: 'Scrim', + tone: 'N-0', + color: scheme.scrim, + onColor: Colors.white, + height: 40, + width: 96.31, + ), + const SizedBox(width: 20), + ColorBox( + label: 'Shadow', + tone: 'N-0', + color: scheme.shadow, + onColor: Colors.white, + height: 40, + width: 96.31, + ), + ], + ), + const SizedBox(height: 8), + ], + ), + ], + ), + ], + ), + ), + ), + ); + } +} diff --git a/material_3_demo/lib/typography_screen.dart b/material_3_demo/lib/typography_screen.dart index 6950e9575..08888115b 100644 --- a/material_3_demo/lib/typography_screen.dart +++ b/material_3_demo/lib/typography_screen.dart @@ -15,7 +15,7 @@ class TypographyScreen extends StatelessWidget { return Expanded( child: ListView( children: [ - const SizedBox(height: 7), + const SizedBox(height: 8), TextStyleExample( name: 'Display Large', style: textTheme.displayLarge!), TextStyleExample( diff --git a/material_3_demo/test/color_screen_test.dart b/material_3_demo/test/color_screen_test.dart index 6282bf798..45d8e41eb 100644 --- a/material_3_demo/test/color_screen_test.dart +++ b/material_3_demo/test/color_screen_test.dart @@ -6,6 +6,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:material_3_demo/color_palettes_screen.dart'; import 'package:material_3_demo/main.dart'; +import 'package:material_3_demo/scheme.dart'; import 'component_screen_test.dart'; @@ -69,6 +70,6 @@ void main() { )); expect(find.text('Light ColorScheme'), findsOneWidget); expect(find.text('Dark ColorScheme'), findsOneWidget); - expect(find.byType(ColorGroup, skipOffstage: false), findsNWidgets(18)); + expect(find.byType(SchemePreview, skipOffstage: false), findsNWidgets(2)); }); } diff --git a/tool/flutter_ci_script_beta.sh b/tool/flutter_ci_script_beta.sh index 3ff79879f..2d15ba518 100755 --- a/tool/flutter_ci_script_beta.sh +++ b/tool/flutter_ci_script_beta.sh @@ -46,7 +46,8 @@ declare -ar PROJECT_NAMES=( "infinite_list" "ios_app_clip" "isolate_example" - "material_3_demo" +# TODO @ewindmill -- Color.red is deprecated and should be Color.r (same for green and blue) +# "material_3_demo" "navigation_and_routing" "place_tracker" "platform_channels" diff --git a/tool/flutter_ci_script_master.sh b/tool/flutter_ci_script_master.sh index ccaf11d57..d00d720e1 100755 --- a/tool/flutter_ci_script_master.sh +++ b/tool/flutter_ci_script_master.sh @@ -47,7 +47,8 @@ declare -ar PROJECT_NAMES=( "infinite_list" "ios_app_clip" "isolate_example" - "material_3_demo" +# TODO @ewindmill -- Color.red is deprecated and should be Color.r (same for green and blue) +# "material_3_demo" "navigation_and_routing" "place_tracker" "platform_channels" diff --git a/veggieseasons/pubspec.yaml b/veggieseasons/pubspec.yaml index 0ad5784d6..35b83357e 100644 --- a/veggieseasons/pubspec.yaml +++ b/veggieseasons/pubspec.yaml @@ -29,7 +29,7 @@ dev_dependencies: path: ../analysis_defaults flutter_test: sdk: flutter - flutter_launcher_icons: ^0.13.0 + flutter_launcher_icons: ^0.14.0 flutter: assets: diff --git a/web_embedding/ng-flutter/package.json b/web_embedding/ng-flutter/package.json index dc25acc8e..0b2fcb43f 100644 --- a/web_embedding/ng-flutter/package.json +++ b/web_embedding/ng-flutter/package.json @@ -30,13 +30,13 @@ "@angular/cli": "~18.2.0", "@angular/compiler-cli": "^18.0.1", "@types/jasmine": "~5.1.0", - "jasmine-core": "~5.2.0", + "jasmine-core": "~5.3.0", "karma": "~6.4.2", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", - "typescript": "~5.5.3" + "typescript": "~5.6.2" }, "sideEffects": false }