So I upgraded Flutter to 3.35 and tried building an app for the Web. It failed with a weird error about the js package being deprecated. Errors a bit like this:
Target dart2js failed: ProcessException: Process exited abnormally with exit code 1:
Error: Couldn’t resolve the package ‘libphonenumber_web’ in ‘package:libphonenumber_web/libphonenumber_web.dart’.
.dart_tool/flutter_build/6872c759b3585597f59b4a698a13ca94/web_plugin_registrant.dart:9:8:
Error: Not found: ‘package:libphonenumber_web/libphonenumber_web.dart’
import ‘package:libphonenumber_web/libphonenumber_web.dart’;
I’d been experimenting with flutter_login package and it was in the projects pubspec.yaml. I found this out by using this command:
flutter pub deps
Which provides a full and detailed tree of all package dependencies. Like this but 260 lines in total!
turfwar 1.0.0+1
|– badges 3.1.2
| ‘– flutter…
|– cupertino_icons 1.0.8
|– flutter 0.0.0
| |– characters 1.4.0
| |– collection 1.19.1
| |– material_color_utilities 0.11.1
| | ‘– collection…
| |– meta 1.16.0
| |– sky_engine 0.0.0
| ‘– vector_math 2.2.0
|– flutter_lints 6.0.0
| ‘– lints 6.0.0
|– flutter_test 0.0.0
js was used by libphonenumber which was part of flutter_login. However despite removing that from pubspec.yaml and removing the package files, the flutter build web command was still complaining about it.
The trick to solving that is just to delete the .dart_tool folder. It’s regenerated by the flutter build command so is safe to delete.
There’s a new feature now, you can add –wasm on the end of the flutter build web command to have it use wasm. More on this official flutter wasm page which includes a link to a neat demo project called wonderous that is worth a look; the source to that is available on GitHub as well..