diff --git a/lib/main.dart b/lib/main.dart index 9b4fe87..cab0186 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -15,6 +15,7 @@ void main() { environmentId: '0322a696-4207-48c6-9ed4-ffb0aa896090', appLogoUrl: 'https://demo.dynamic.xyz/favicon-32x32.png', appName: 'Dynamic Demo', + appOrigin: 'https://demo.dynamic.xyz', redirectUrl: "flutterdemo://", ), ); diff --git a/lib/views/home_view.dart b/lib/views/home_view.dart index 7eb9038..d36da33 100644 --- a/lib/views/home_view.dart +++ b/lib/views/home_view.dart @@ -125,9 +125,7 @@ class HomeView extends StatelessWidget { return Column( children: wallets - .map( - (wallet) => _buildWalletCard(context, wallet), - ) + .map((wallet) => WalletCard(wallet: wallet)) .toList(), ); }, @@ -173,8 +171,18 @@ class HomeView extends StatelessWidget { ], ); } +} + +class WalletCard extends StatelessWidget { + final BaseWallet wallet; + + const WalletCard({super.key, required this.wallet}); + + @override + Widget build(BuildContext context) { + final isAuthenticated = wallet.isAuthenticated ?? false; + final additionalAddresses = wallet.additionalAddresses ?? const []; - Widget _buildWalletCard(BuildContext context, BaseWallet wallet) { return Container( margin: const EdgeInsets.only(bottom: 12), padding: const EdgeInsets.all(12), @@ -207,7 +215,7 @@ class HomeView extends StatelessWidget { Container( padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), decoration: BoxDecoration( - color: Colors.blue.withOpacity(0.1), + color: Colors.blue.withValues(alpha: 0.1), borderRadius: BorderRadius.circular(12), ), child: Text( @@ -245,25 +253,25 @@ class HomeView extends StatelessWidget { Row( children: [ Icon( - wallet.isAuthenticated ? Icons.verified : Icons.warning, - color: wallet.isAuthenticated ? Colors.green : Colors.orange, + isAuthenticated ? Icons.verified : Icons.warning, + color: isAuthenticated ? Colors.green : Colors.orange, size: 16, ), const SizedBox(width: 4), Text( - wallet.isAuthenticated ? 'Authenticated' : 'Not Authenticated', + isAuthenticated ? 'Authenticated' : 'Not Authenticated', style: TextStyle( - color: wallet.isAuthenticated ? Colors.green : Colors.orange, + color: isAuthenticated ? Colors.green : Colors.orange, fontSize: 12, fontWeight: FontWeight.w500, ), ), ], ), - if (wallet.additionalAddresses.isNotEmpty) ...[ + if (additionalAddresses.isNotEmpty) ...[ const SizedBox(height: 8), Text( - 'Additional Addresses: ${wallet.additionalAddresses.length}', + 'Additional Addresses: ${additionalAddresses.length}', style: const TextStyle( color: Colors.grey, fontSize: 12, diff --git a/lib/views/wallet_view.dart b/lib/views/wallet_view.dart index e217281..636ad54 100644 --- a/lib/views/wallet_view.dart +++ b/lib/views/wallet_view.dart @@ -41,18 +41,23 @@ class _WalletViewState extends State { }); try { final bal = await DynamicSDK.instance.wallets.getBalance(wallet: wallet); + if (!mounted) return; + setState(() { _balance = bal; }); } catch (e) { + if (!mounted) return; + setState(() { _error = e.toString(); }); } finally { - if (!mounted) return; - setState(() { - _loadingBalance = false; - }); + if (mounted) { + setState(() { + _loadingBalance = false; + }); + } } } @@ -201,6 +206,8 @@ class _WalletViewState extends State { final transactionHash = await DynamicSDK.instance.web3dart .sendTransaction(transaction: transaction, wallet: wallet); + if (!mounted) return; + setState(() { _lastTxHash = transactionHash; }); @@ -209,6 +216,8 @@ class _WalletViewState extends State { const SnackBar(content: Text('Mint transaction submitted')), ); } catch (e) { + if (!mounted) return; + setState(() { _error = e.toString(); }); @@ -216,10 +225,11 @@ class _WalletViewState extends State { context, ).showSnackBar(SnackBar(content: Text('Mint failed: $e'))); } finally { - if (!mounted) return; - setState(() { - _busy = false; - }); + if (mounted) { + setState(() { + _busy = false; + }); + } } } @@ -413,7 +423,7 @@ class _WalletHeader extends StatelessWidget { Container( padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), decoration: BoxDecoration( - color: Colors.blue.withOpacity(0.1), + color: Colors.blue.withValues(alpha: 0.1), borderRadius: BorderRadius.circular(12), ), child: Text( @@ -430,6 +440,8 @@ class _WalletHeader extends StatelessWidget { tooltip: 'Copy address', onPressed: () async { await Clipboard.setData(ClipboardData(text: wallet.address)); + if (!context.mounted) return; + ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text('Address copied to clipboard'), diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 4d70014..780f706 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,18 +6,30 @@ import FlutterMacOS import Foundation import desktop_webview_window -import flutter_secure_storage_macos +import device_info_plus +import file_picker +import flutter_secure_storage_darwin import flutter_web_auth_2 +import package_info_plus +import passkeys_darwin import path_provider_foundation +import share_plus +import ua_client_hints import url_launcher_macos import webview_flutter_wkwebview import window_to_front func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { DesktopWebviewWindowPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewWindowPlugin")) - FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) + DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) + FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin")) + FlutterSecureStorageDarwinPlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStorageDarwinPlugin")) FlutterWebAuth2Plugin.register(with: registry.registrar(forPlugin: "FlutterWebAuth2Plugin")) + FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) + PasskeysPlugin.register(with: registry.registrar(forPlugin: "PasskeysPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin")) + UAClientHintsPlugin.register(with: registry.registrar(forPlugin: "UAClientHintsPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) WebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "WebViewFlutterPlugin")) WindowToFrontPlugin.register(with: registry.registrar(forPlugin: "WindowToFrontPlugin")) diff --git a/pubspec.lock b/pubspec.lock index 079ae21..d9adf8e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,6 +1,14 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + args: + dependency: transitive + description: + name: args + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 + url: "https://pub.dev" + source: hosted + version: "2.7.0" async: dependency: transitive description: @@ -21,10 +29,10 @@ packages: dependency: transitive description: name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.4.1" clock: dependency: transitive description: @@ -49,6 +57,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.2" + cross_file: + dependency: transitive + description: + name: cross_file + sha256: "28bb3ae56f117b5aec029d702a90f57d285cd975c3c5c281eaca38dbc47c5937" + url: "https://pub.dev" + source: hosted + version: "0.3.5+2" crypto: dependency: transitive description: @@ -65,6 +81,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.8" + dbus: + dependency: transitive + description: + name: dbus + sha256: d0c98dcd4f5169878b6cf8f6e0a52403a9dff371a3e2f019697accbf6f44a270 + url: "https://pub.dev" + source: hosted + version: "0.7.12" desktop_webview_window: dependency: transitive description: @@ -73,22 +97,38 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.3" + device_info_plus: + dependency: transitive + description: + name: device_info_plus + sha256: b4fed1b2835da9d670d7bed7db79ae2a94b0f5ad6312268158a9b5479abbacdd + url: "https://pub.dev" + source: hosted + version: "12.4.0" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + sha256: e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f + url: "https://pub.dev" + source: hosted + version: "7.0.3" dynamic_sdk: dependency: "direct main" description: name: dynamic_sdk - sha256: e89366edf7f71d86508cc655ec366ba199a6c9aac97fa3234ba5287259d89ceb + sha256: "65b1dee7140e01ca5715bb99947efe2d969cd113e384c2bf68b65267fc32b4e2" url: "https://pub.dev" source: hosted - version: "0.0.1-alpha.4" + version: "1.12.0" dynamic_sdk_web3dart: dependency: "direct main" description: name: dynamic_sdk_web3dart - sha256: c3f0beee856e56251e560cb977b73d9a4b393514b0cf0a95da922bea70470dd4 + sha256: "825b04bdddc891664a48689ef208374fde57c7cf7e4e0ea306124e11b54df82f" url: "https://pub.dev" source: hosted - version: "0.0.1-alpha.4" + version: "1.12.0" eip1559: dependency: transitive description: @@ -121,6 +161,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + file_picker: + dependency: transitive + description: + name: file_picker + sha256: "57d9a1dd5063f85fa3107fb42d1faffda52fdc948cefd5fe5ea85267a5fc7343" + url: "https://pub.dev" + source: hosted + version: "10.3.10" fixnum: dependency: transitive description: @@ -142,54 +198,62 @@ packages: url: "https://pub.dev" source: hosted version: "5.0.0" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + sha256: "38d1c268de9097ff59cf0e844ac38759fc78f76836d37edad06fa21e182055a0" + url: "https://pub.dev" + source: hosted + version: "2.0.34" flutter_secure_storage: dependency: transitive description: name: flutter_secure_storage - sha256: "9cad52d75ebc511adfae3d447d5d13da15a55a92c9410e50f67335b6d21d16ea" + sha256: "7686b1d6a29985dcbb808c59518226e603e3bfa7c0ddfd1a0d00e4cda77c868e" url: "https://pub.dev" source: hosted - version: "9.2.4" - flutter_secure_storage_linux: + version: "10.3.1" + flutter_secure_storage_darwin: dependency: transitive description: - name: flutter_secure_storage_linux - sha256: be76c1d24a97d0b98f8b54bce6b481a380a6590df992d0098f868ad54dc8f688 + name: flutter_secure_storage_darwin + sha256: "82329fa5cdf343773b1b6897dea959105a29f092454259edff92f9f6637e8149" url: "https://pub.dev" source: hosted - version: "1.2.3" - flutter_secure_storage_macos: + version: "0.3.2" + flutter_secure_storage_linux: dependency: transitive description: - name: flutter_secure_storage_macos - sha256: "6c0a2795a2d1de26ae202a0d78527d163f4acbb11cde4c75c670f3a0fc064247" + name: flutter_secure_storage_linux + sha256: a5f35ddab43cf5c8215d2feb4ce1957851f28c5c37e6f04335066a0602087bf5 url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "3.0.1" flutter_secure_storage_platform_interface: dependency: transitive description: name: flutter_secure_storage_platform_interface - sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8 + sha256: "8ceea1223bee3c6ac1a22dabd8feefc550e4729b3675de4b5900f55afcb435d6" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "2.0.1" flutter_secure_storage_web: dependency: transitive description: name: flutter_secure_storage_web - sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9 + sha256: "073a62b3aeb866ab4ce795f960413948e51e5a42a9b0c8333b6daf5bb3208a1c" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "2.1.1" flutter_secure_storage_windows: dependency: transitive description: name: flutter_secure_storage_windows - sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709 + sha256: "3b7c8e068875dfd46719ff57c90d8c459c87f2302ed6b00ff006b3c9fcad1613" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "4.1.0" flutter_test: dependency: "direct dev" description: flutter @@ -316,26 +380,114 @@ packages: dependency: transitive description: name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 url: "https://pub.dev" source: hosted - version: "0.12.17" + version: "0.12.19" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" url: "https://pub.dev" source: hosted - version: "0.11.1" + version: "0.13.0" meta: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349" + url: "https://pub.dev" + source: hosted + version: "1.18.0" + mime: + dependency: transitive + description: + name: mime + sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + package_info_plus: + dependency: transitive + description: + name: package_info_plus + sha256: "468c26b4254ab01979fa5e4a98cb343ea3631b9acee6f21028997419a80e1a20" url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "9.0.1" + package_info_plus_platform_interface: + dependency: transitive + description: + name: package_info_plus_platform_interface + sha256: "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086" + url: "https://pub.dev" + source: hosted + version: "3.2.1" + passkeys: + dependency: transitive + description: + name: passkeys + sha256: "88e7e67aef731dd0e25dd321c98cd421d3d3b188c885ec18a50d2532f779ef0f" + url: "https://pub.dev" + source: hosted + version: "2.19.0" + passkeys_android: + dependency: transitive + description: + name: passkeys_android + sha256: "4286322398df7cc74b7503e9d638fab7885e56986689a2f683731da473f23f85" + url: "https://pub.dev" + source: hosted + version: "2.12.0" + passkeys_darwin: + dependency: transitive + description: + name: passkeys_darwin + sha256: "3a9008714d392af79d93f5a657fa93b76edea515e2cf71e25da3567aec663ae7" + url: "https://pub.dev" + source: hosted + version: "0.4.0" + passkeys_doctor: + dependency: transitive + description: + name: passkeys_doctor + sha256: e99dda3ad634961d10cea491c726d9e971bf2513b668a8c4201f80d89a587649 + url: "https://pub.dev" + source: hosted + version: "1.3.1" + passkeys_ios: + dependency: transitive + description: + name: passkeys_ios + sha256: "5c1423c3ce6c76ff181538e3bc1f66b5eaf9bc6f2d372dc85694f11a54e58d3f" + url: "https://pub.dev" + source: hosted + version: "2.9.0" + passkeys_platform_interface: + dependency: transitive + description: + name: passkeys_platform_interface + sha256: "10fd4dd6779f6ca928adc2289e05ce0877250e68f2cc584abd2e3fcd6952e454" + url: "https://pub.dev" + source: hosted + version: "2.6.0" + passkeys_web: + dependency: transitive + description: + name: passkeys_web + sha256: "46fd7ad94ac8774e08723fca38b6f4211219d8c38b4282230f32bbc4921bdbe0" + url: "https://pub.dev" + source: hosted + version: "2.8.1" + passkeys_windows: + dependency: transitive + description: + name: passkeys_windows + sha256: acea5ff790a8c6de0366d1b87dd591c0d6e6770bf17d62efbd9fac7747724cc7 + url: "https://pub.dev" + source: hosted + version: "0.1.1" path: dependency: transitive description: @@ -392,6 +544,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.0" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675" + url: "https://pub.dev" + source: hosted + version: "7.0.2" platform: dependency: transitive description: @@ -432,6 +592,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + share_plus: + dependency: transitive + description: + name: share_plus + sha256: "223873d106614442ea6f20db5a038685cc5b32a2fba81cdecaefbbae0523f7fa" + url: "https://pub.dev" + source: hosted + version: "12.0.2" + share_plus_platform_interface: + dependency: transitive + description: + name: share_plus_platform_interface + sha256: "88023e53a13429bd65d8e85e11a9b484f49d4c190abbd96c7932b74d6927cc9a" + url: "https://pub.dev" + source: hosted + version: "6.1.0" sky_engine: dependency: transitive description: flutter @@ -497,10 +673,10 @@ packages: dependency: transitive description: name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" + sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e" url: "https://pub.dev" source: hosted - version: "0.7.6" + version: "0.7.11" typed_data: dependency: transitive description: @@ -509,6 +685,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" + ua_client_hints: + dependency: transitive + description: + name: ua_client_hints + sha256: e6e302bb7c21d6a90023db61e0ec413f0810ce341bb7e2ab447ff5d61ec3d87e + url: "https://pub.dev" + source: hosted + version: "1.7.0" url_launcher: dependency: transitive description: @@ -614,7 +798,7 @@ packages: source: hosted version: "1.1.1" web3dart: - dependency: transitive + dependency: "direct main" description: name: web3dart sha256: "885e5e8f0cc3c87c09f160a7fce6279226ca41316806f7ece2001959c62ecced" @@ -661,6 +845,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.14.0" + win32_registry: + dependency: transitive + description: + name: win32_registry + sha256: "6f1b564492d0147b330dd794fee8f512cec4977957f310f9951b5f9d83618dae" + url: "https://pub.dev" + source: hosted + version: "2.1.0" window_to_front: dependency: transitive description: @@ -677,6 +869,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + xml: + dependency: transitive + description: + name: xml + sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" + url: "https://pub.dev" + source: hosted + version: "6.6.1" sdks: - dart: ">=3.9.0 <4.0.0" - flutter: ">=3.29.0" + dart: ">=3.10.0-0 <4.0.0" + flutter: ">=3.35.0" diff --git a/pubspec.yaml b/pubspec.yaml index 4e9b1e2..06a56f4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -34,9 +34,10 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - dynamic_sdk: ^0.0.1-alpha.4 - dynamic_sdk_web3dart: ^0.0.1-alpha.4 + dynamic_sdk: ^1.12.0 + dynamic_sdk_web3dart: ^1.12.0 go_router: ^16.2.0 + web3dart: ^2.7.3 dev_dependencies: flutter_test: diff --git a/test/widget_test.dart b/test/widget_test.dart index f23f096..ffb4c55 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -1,30 +1,45 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - +import 'package:dynamic_sdk/dynamic_sdk.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; - -import 'package:my_app/main.dart'; +import 'package:my_app/views/home_view.dart'; void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const MyApp()); + testWidgets('handles nullable wallet metadata', (tester) async { + const wallet = BaseWallet(address: '0x1234', chain: 'EVM', id: 'wallet-1'); + + await tester.pumpWidget( + const MaterialApp( + home: Scaffold(body: WalletCard(wallet: wallet)), + ), + ); + + expect(find.text('Not Authenticated'), findsOneWidget); + expect(find.byIcon(Icons.warning), findsOneWidget); + expect(find.textContaining('Additional Addresses:'), findsNothing); + }); - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); + testWidgets('shows authenticated wallet metadata', (tester) async { + const wallet = BaseWallet( + additionalAddresses: [ + WalletAdditionalAddress( + address: 'bc1qexample', + type: WalletAddressType.payment, + ), + ], + address: '0x1234', + chain: 'EVM', + id: 'wallet-1', + isAuthenticated: true, + ); - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); + await tester.pumpWidget( + const MaterialApp( + home: Scaffold(body: WalletCard(wallet: wallet)), + ), + ); - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); + expect(find.text('Authenticated'), findsOneWidget); + expect(find.byIcon(Icons.verified), findsOneWidget); + expect(find.text('Additional Addresses: 1'), findsOneWidget); }); } diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 66aef1d..0288930 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -8,6 +8,8 @@ #include #include +#include +#include #include #include @@ -16,6 +18,10 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("DesktopWebviewWindowPlugin")); FlutterSecureStorageWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); + PasskeysWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("PasskeysWindowsPlugin")); + SharePlusWindowsPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi")); UrlLauncherWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherWindows")); WindowToFrontPluginRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 59e47fd..6800829 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -5,6 +5,8 @@ list(APPEND FLUTTER_PLUGIN_LIST desktop_webview_window flutter_secure_storage_windows + passkeys_windows + share_plus url_launcher_windows window_to_front )