1 min read

Fix localhost invalid domain in Flutter 1.22

Recently, I update Flutter to version 1.22 and one of my apps stopped working on iOS, giving the following error:

Runner[52852:484760] [VERBOSE-2:shell.cc(210)] Dart Unhandled Exception: Invalid argument (domain): Invalid domain name: "localhost", stack trace: #0      new _DomainNetworkPolicy (dart:io/network_policy.dart:85:7)
#1      _constructDomainPolicies (dart:io/network_policy.dart:181:22)
#2      _EmbedderConfig._setDomainPolicies (dart:io/embedder_config.dart:44:23)

It looks like a change in the network policy does not allow to defined localhost as a valid domain.

I am currently using localhost to connect to a local Cloud Functions emulator, by instantiating Cloud Functions with

CloudFunctions(region: region)
    .useFunctionsEmulator(origin: "http://localhost:5001")

and allowing http connection in the Info.plist:


Apparently this was broken with Flutter 1.22.

My solution was to remove the exception from the Info.plist file, by removing the lines above, and then adding a host to the firebase.json of the local Firebase project, where the emulators are defined:

"emulators": {
    "functions": {
        "port": 5001,
        "host": "" <-- added this

This led to an update of instantiation of Cloud Functions in code:

CloudFunctions(region: region)
    .useFunctionsEmulator(origin: """)

and everything started working again.

There is another change in Flutter 1.23 that might break this again. I will update this short article if needed.

Wanna stay up-to-date with Flutter and Dart?

Subscribe to get a weekly email with the best articles about Flutter and Dart.

    We won't send you spam. Unsubscribe at any time.