Dart library and parts are not bi-directionally resolved

Issue

I have a library, ‘foo’, which consists of a part, ‘bar’, and imports the dart:io library. The library and the part are declared as follows, in ‘foo.dart’:

// in foo.dart

library foo;
import 'dart:io';
part "bar.dart"; // resolves

class Foo {
  Bar bar = new Bar(); // resolves
  HttpServer server = new HttpServer(); // resolves
}

‘foo.dart’ and ‘bar.dart’ are located in the same directory.

‘bar.dart’ refers back to library foo, like so:

// in bar.dart

part of foo; // does not resolve

class Bar {
  Foo foo = new Foo(); // does not resolve
  HttpServer server = new HttpServer // does not resolve
}

But in Dart Editor, I see a warning in ‘bar.dart’, saying ‘Cannot resolve foo’. Accordingly, any imports (such as ‘dart:io’) I declare in foo.dart are not available to bar.dart, nor are any of my foo.dart definitions, and since bar.dart is a part of foo, it is not permitted to import any further libraries or declare any further parts.

I would like to organize my code in such a way that:
* any imports I bring into foo.dart to be available to bar.dart (and other source parts)
* library definitions made in one library source part are available to other library source parts.
* (obviously) library definitions made in bar.dart are available to foo.dart (this already works as expected)

Can someone please help me understand how to accomplish these?

Solution

I think this is just a bug in the Editor. Have you tried running your program? It should work.

The Editor still gets stuck warnings sometimes, and closing the file or closing the Editor for really stuck ones, usually clears it up. I’ll see if I find the bug report so you can star it or maybe add a log file if it keeps happening to you.

Answered By – Justin Fagnani

Answer Checked By – Katrina (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published.