subtype_ of_ disallowed_ type
'{0}' can't be used as a superclass constraint.
Classes and mixins can't implement '{0}'.
Classes can't extend '{0}'.
Classes can't mixin '{0}'.
Description
#
The analyzer produces this diagnostic when one of the restricted classes is
used in either an
extends
,
implements
,
with
, or
on
clause. The
classes
bool
,
double
,
FutureOr
,
int
,
Null
,
num
, and
String
are all restricted in this way, to allow for more efficient
implementations.
Examples
#
The following code produces this diagnostic because
String
is used in an
extends
clause:
class A extends String {}
The following code produces this diagnostic because
String
is used in an
implements
clause:
class B implements String {}
The following code produces this diagnostic because
String
is used in a
with
clause:
class C with String {}
The following code produces this diagnostic because
String
is used in an
on
clause:
mixin M on String {}
Common fixes
#If a different type should be specified, then replace the type:
class A extends Object {}
If there isn't a different type that would be appropriate, then remove the type, and possibly the whole clause:
class B {}
Unless stated otherwise, the documentation on this site reflects Dart 3.9.2. Page last updated on 2025-9-1. View source or report an issue.