Dart Analyze logoDart Analyze/
DRT-W1513

Constant values from a deferred library can't be used as a default parameter valueDRT-W1513

Major severityMajor
Bug Risk categoryBug Risk

The analyzer produces this diagnostic when the default value of an optional parameter uses a constant from a library imported using a deferred import. Default values need to be available at compile time, and constants from deferred libraries aren't available at compile time.

For more information, check out Lazily loading a library.

Example

Given a file a.dart that defines the constant zero:

const zero = 0;

The following code produces this diagnostic because zero is declared in a library imported using a deferred import:

import 'a.dart' deferred as a;

void f({int x = a.zero}) {}

Common fixes

If you need to reference the constant from the imported library, then remove the deferred keyword:

import 'a.dart' as a;

void f({int x = a.zero}) {}

If you don't need to reference the constant, then replace the default value:

void f({int x = 0}) {}