Skip to main content

avoid_type_to_string

Using 'toString' on a 'Type' is not safe in production code.

Description

#

The analyzer produces this diagnostic when the method toString is invoked on a value whose static type is Type.

Example

#

The following code produces this diagnostic because the method toString is invoked on the Type returned by runtimeType:

dart
bool isC(Object o) => o.runtimeType.toString() == 'C';

class C {}

Common fixes

#

If it's essential that the type is exactly the same, then use an explicit comparison:

dart
bool isC(Object o) => o.runtimeType == C;

class C {}

If it's alright for instances of subtypes of the type to return true, then use a type check:

dart
bool isC(Object o) => o is C;

class C {}