getx icon indicating copy to clipboard operation
getx copied to clipboard

Support to Flutter web WASM

Open JgomesAT opened this issue 1 year ago • 8 comments

Context: The unavailable library 'dart:html' is imported through these packages:

in this package uses the dart:HTML not valid to use with flutter web wasm

JgomesAT avatar May 15 '24 07:05 JgomesAT

+1 We need upgrade to Flutter 3.22 and compile to Wasm

NashIlli avatar May 15 '24 19:05 NashIlli

the workaround is modify the get_utils/src/platform/platform_web.dart in the package change import 'dart:html' as html; to import 'package:web/web.dart' as html;

elliotkhd avatar May 16 '24 06:05 elliotkhd

Hope this will be fixed soon

Giuliopretis avatar Jun 03 '24 09:06 Giuliopretis

+1 Still, the support for Flutter wasm is not there yet

TechnicalMeaw avatar Jun 28 '24 12:06 TechnicalMeaw

I had to do a horrible hack to work around this issue, posting it here incase anyone else needs this until it's fixed

sed -i 's|import '\''dart:html'\'' as html;|import '\''package:web/web.dart'\'' as html;|g' $HOME/.pub-cache/hosted/pub.dev/get-4.6.6/lib/get_utils/src/platform/platform_web.dart

DaleLJefferson avatar Jun 28 '24 12:06 DaleLJefferson

any new about support to wasm I haves this error:

get-4.6.6/lib/get_utils/src/platform/platform_web.dart:7:1: Error: Type 'html.Navigator' not found. html.Navigator _navigator = html.window.navigator; ^^^^^^^^^^^^^^ ../../../../.pub-cache/hosted/pub.dev/get-4.6.6/lib/get_utils/src/platform/platform_web.dart:7:6: Error: 'Navigator' isn't a type. html.Navigator _navigator = html.window.navigator; ^^^^^^^^^ ../../../../.pub-cache/hosted/pub.dev/get-4.6.6/lib/get_utils/src/platform/platform_web.dart:7:34: Error: Undefined name 'window'. html.Navigator _navigator = html.window.navigator; ^^^^^^

JgomesAT avatar Aug 01 '24 12:08 JgomesAT

Got same error @JgomesAT

arioul89 avatar Aug 23 '24 07:08 arioul89

with the release candiate 5 the problme is solved

JgomesAT avatar Aug 23 '24 08:08 JgomesAT

I have errors with release-candidate-9.2

/AppData/Local/Pub/Cache/hosted/pub.dev/get-5.0.0-release-candidate-9.2/lib/get_connect/sockets/src/sockets_html.dart:4:8: Error: Dart library 'dart:html' is not available on this platform. import 'dart:html'; ^ Context: The unavailable library 'dart:html' is imported through these packages:

main.dart => package:trainchess => package:get => dart:html

Detailed import paths for (some of) the these imports:

main.dart => package:trainchess/main.dart => package:get/get.dart => package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart => package:get/get_connect/sockets/src/sockets_html.dart => dart:html       
main.dart => package:trainchess/main.dart => package:trainchess/src/features/chess/controller/game_list_controller.dart => package:get/get.dart => package:get/get_connect/connect.dart =>
package:get/get_connect/sockets/sockets.dart => package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/features/chess/controller/game_list_controller.dart => package:trainchess/src/features/chess/controller/base_chess_controller.dart => package:get/get.dart =>     
package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart => package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/features/chess/controller/game_loader_controller.dart => package:get/get.dart => package:get/get_connect/connect.dart =>
package:get/get_connect/sockets/sockets.dart => package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/features/chess/controller/game_loader_controller.dart => package:trainchess/src/features/chess/controller/game_list_controller.dart => package:get/get.dart =>    
package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart => package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/features/chess/controller/game_loader_controller.dart => package:trainchess/src/features/chess/controller/game_list_controller.dart =>
package:trainchess/src/features/chess/controller/base_chess_controller.dart => package:get/get.dart => package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart =>
package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/features/chess/controller/game_loader_controller.dart => package:trainchess/src/features/pgn/file_picker_service.dart => package:get/get.dart =>
package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart => package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/features/chess/controller/train_controller.dart => package:get/get.dart => package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart =>
package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/features/pgn/file_picker_service.dart => package:get/get.dart => package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart =>
package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/navigation/app_pages.dart => package:get/get.dart => package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart =>
package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/navigation/app_pages.dart => package:trainchess/src/navigation/main_scaffold.dart => package:get/get.dart => package:get/get_connect/connect.dart =>
package:get/get_connect/sockets/sockets.dart => package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/navigation/app_pages.dart => package:trainchess/src/navigation/main_scaffold.dart => package:trainchess/src/features/chess/controller/game_loader_controller.dart 
=> package:get/get.dart => package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart => package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/navigation/app_pages.dart => package:trainchess/src/navigation/main_scaffold.dart => package:trainchess/src/features/chess/controller/game_loader_controller.dart 
=> package:trainchess/src/features/chess/controller/game_list_controller.dart => package:get/get.dart => package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart =>
package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/navigation/app_pages.dart => package:trainchess/src/navigation/main_scaffold.dart => package:trainchess/src/features/chess/controller/game_loader_controller.dart 
=> package:trainchess/src/features/chess/controller/game_list_controller.dart => package:trainchess/src/features/chess/controller/base_chess_controller.dart => package:get/get.dart => package:get/get_connect/connect.dart =>       
package:get/get_connect/sockets/sockets.dart => package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/navigation/app_pages.dart => package:trainchess/src/navigation/main_scaffold.dart => package:trainchess/src/features/chess/controller/game_loader_controller.dart 
=> package:trainchess/src/features/pgn/file_picker_service.dart => package:get/get.dart => package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart =>
package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/navigation/app_pages.dart => package:trainchess/src/navigation/main_scaffold.dart => package:trainchess/src/navigation/side_bar.dart => package:get/get.dart =>   
package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart => package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/navigation/app_pages.dart => package:trainchess/src/navigation/main_scaffold.dart => package:trainchess/src/navigation/side_bar.dart =>
package:trainchess/src/authentication/edit_profile_dialog.dart => package:get/get.dart => package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart =>
package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/navigation/app_pages.dart => package:trainchess/src/navigation/main_scaffold.dart => package:trainchess/src/navigation/side_bar.dart =>
package:trainchess/src/authentication/edit_profile_dialog.dart => package:trainchess/src/authentication/auth_controller.dart => package:get/get.dart => package:get/get_connect/connect.dart =>
package:get/get_connect/sockets/sockets.dart => package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/navigation/app_pages.dart => package:trainchess/src/navigation/main_scaffold.dart => package:trainchess/src/navigation/side_bar.dart =>
package:trainchess/src/authentication/login_dialog.dart => package:get/get.dart => package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart => package:get/get_connect/sockets/src/sockets_html.dart =>   
dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/navigation/app_pages.dart => package:trainchess/src/navigation/main_scaffold.dart => package:trainchess/src/navigation/side_bar.dart =>
package:trainchess/src/authentication/login_dialog.dart => package:trainchess/src/authentication/auth_controller.dart => package:get/get.dart => package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart 
=> package:get/get_connect/sockets/src/sockets_html.dart => dart:html
main.dart => package:trainchess/main.dart => package:trainchess/src/navigation/app_pages.dart => package:trainchess/src/navigation/main_scaffold.dart => package:trainchess/src/navigation/side_bar.dart =>
package:trainchess/src/authentication/auth_controller.dart => package:get/get.dart => package:get/get_connect/connect.dart => package:get/get_connect/sockets/sockets.dart => package:get/get_connect/sockets/src/sockets_html.dart =>
dart:html
...

kuruhuru avatar Aug 31 '24 05:08 kuruhuru

I have the same erro with candidate 9.2

/get-5.0.0-release-candidate-9.2/lib/get_connect/sockets/src/sockets_html.dart:4:8: Error: Dart library 'dart:html' is not available on this platform. import 'dart:html';

../../../../.pub-cache/hosted/pub.dev/get-5.0.0-release-candidate-9.2/lib/get_connect/sockets/src/sockets_html.dart:11:3: Error: Type 'WebSocket' not found. WebSocket? socket; ^^^^^^^^^ ../../../../.pub-cache/hosted/pub.dev/get-5.0.0-release-candidate-9.2/lib/get_connect/sockets/src/sockets_html.dart:11:3: Error: 'WebSocket' isn't a type. WebSocket? socket; ^^^^^^^^^ ../../../../.pub-cache/hosted/pub.dev/get-5.0.0-release-candidate-9.2/lib/get_connect/sockets/src/sockets_html.dart:37:16: Error: The method 'WebSocket' isn't defined for the class 'BaseWebSocket'.

  • 'BaseWebSocket' is from 'package:get/get_connect/sockets/src/sockets_html.dart' ('../../../../.pub-cache/hosted/pub.dev/get-5.0.0-release-candidate-9.2/lib/get_connect/sockets/src/sockets_html.dart'). Try correcting the name to the name of an existing method, or defining a method named 'WebSocket'. socket = WebSocket(url); ^^^^^^^^^ ../../../../.pub-cache/hosted/pub.dev/get-5.0.0-release-candidate-9.2/lib/get_connect/sockets/src/sockets_html.dart:104:49: Error: The getter 'WebSocket' isn't defined for the class 'BaseWebSocket'.
  • 'BaseWebSocket' is from 'package:get/get_connect/sockets/src/sockets_html.dart' ('../../../../.pub-cache/hosted/pub.dev/get-5.0.0-release-candidate-9.2/lib/get_connect/sockets/src/sockets_html.dart'). Try correcting the name to the name of an existing getter, or defining a getter or field named 'WebSocket'. if (socket != null && socket!.readyState == WebSocket.OPEN) { ^^^^^^^^^ Command: /Users/jorgegomes/Development/Flutter2_SDK/flutter/bin/cache/dart-sdk/bin/dart compile wasm --packages=.dart_tool/package_config.json --extra-compiler-option=--platform=/Users/jorgegomes/Development/Flutter2_SDK/flutter/bin/cache/flutter_web_sdk/kernel/dart2wasm_platform.dill --extra-compiler-option=--delete-tostring-package-uri=dart:ui --extra-compiler-option=--delete-tostring-package-uri=package:flutter --extra-compiler-option=--import-shared-memory --extra-compiler-option=--shared-memory-max-pages=32768 -Ddart.vm.product=true -DFLUTTER_WEB_AUTO_DETECT=false -DFLUTTER_WEB_USE_SKIA=false -DFLUTTER_WEB_USE_SKWASM=true -DFLUTTER_WEB_CANVASKIT_URL=https://www.gstatic.com/flutter-canvaskit/c9b9d5780da342eb3f0f5e439a7db06f7d112575/

JgomesAT avatar Sep 02 '24 07:09 JgomesAT

With the previous version 5.0.0-release-candidate-9 works fine

JgomesAT avatar Sep 02 '24 07:09 JgomesAT

Hi @jonataslaw, could you please fix this for the next release candidate? It is really urgent for our project.

Thanks,

../../../../.pub-cache/hosted/pub.dev/get-5.0.0-release-candidate-9.2/lib/get_connect/sockets/src/sockets_html.dart:11:3: Error: Type 'WebSocket' not

GelistirmeKF avatar Sep 24 '24 09:09 GelistirmeKF

Fixed in latest RC, thank you for reporting this!

jonataslaw avatar Sep 24 '24 17:09 jonataslaw