Dart Error: error: import of dart:mirrors is not supported in the current Dart runtime

6,571

Solution 1

In my case, for one of the projects, I had both 'package:json_annotation/json_annotation.dart' and 'package:json_serializable/json_serializable.dart' imported in the dart file. Removing json_serializable package resolved the above error.

Solution 2

Unfortunately the glcoud package for dart is not compatible with flutter (or web) due to the mirror package.

I suggest you to open an issue on the github repository about supporting gcloud pub/sub on flutter. https://github.com/dart-lang/gcloud/issues/new

I can also check the googleapis package which has a pub/sub implementation that might fit your needs. https://pub.dev/documentation/googleapis/latest/googleapis.pubsub.v1/googleapis.pubsub.v1-library.html. (use by glcoud package)

Share:
6,571
Shinogami
Author by

Shinogami

Updated on December 14, 2022

Comments

  • Shinogami
    Shinogami over 1 year

    I'm currently trying to make some mobile code with Flutter. I'm trying to publish/subscribe data to GCP Cloud Pub/Sub using gcloud library dart. Here is the code for the main.dart:

    import 'dart:io';
    import 'package:googleapis_auth/auth_io.dart' as auth;
    import 'package:http/http.dart' as http;
    import 'package:gcloud/db.dart';
    import 'package:gcloud/storage.dart';
    
    
    import 'package:gcloud/pubsub.dart';
    import 'package:gcloud/service_scope.dart' as ss;
    import 'package:gcloud/src/datastore_impl.dart' as datastore_impl;
    
    Future<int> main() async {
    
      // Read the service account credentials from the file.
    var jsonCredentials = new File('path/file.json').readAsStringSync();
    var credentials = new auth.ServiceAccountCredentials.fromJson(jsonCredentials);
    
    // Get an HTTP authenticated client using the service account credentials.
    var scopes = []    
        ..addAll(PubSub.SCOPES);
    var client = await auth.clientViaServiceAccount(credentials, scopes);
    
    
    // Instantiate objects to access Cloud Datastore, Cloud Storage
    // and Cloud Pub/Sub APIs.
    var pubsub = new PubSub(client, 'project-name');
    ss.fork(() {
      // register the services in the new service scope.
      registerPubSubService(pubsub);
    
      // Run application using these services.
    });
    
    var topic = await pubsub.createTopic('flutter');
    await topic.publishString('coba publish dr flutter');
    
    var subscription =
        await pubsub.createSubscription('sub_flutter', 'flutter');
    var pullEvent = await subscription.pull();
    print(pullEvent.message.asString);
    await pullEvent.acknowledge();
    
      return 0;
    }
    

    Here are the denpendencies on the pubspec.yaml:

    dependencies:
      flutter:
        sdk: flutter
    
      googleapis: ^0.54.0
      googleapis_beta: ^0.49.0
      googleapis_auth: ^0.2.10
      gcloud: ^0.6.3
    
    

    When trying to debug the code I get the following errors:

    Launching lib\main.dart on vivo 1918 in debug mode...
    Built build\app\outputs\apk\debug\app-debug.apk.
    E/flutter (20586): [ERROR:flutter/shell/common/shell.cc(178)] Dart Error: error: import of dart:mirrors is not supported in the current Dart runtime
    E/flutter (20586): [ERROR:flutter/shell/common/engine.cc(188)] Could not prepare to run the isolate.
    E/flutter (20586): [ERROR:flutter/shell/common/engine.cc(127)] Engine not prepare and launch isolate.
    E/flutter (20586): [ERROR:flutter/shell/common/shell.cc(407)] Could not launch engine with configuration.