Type objects represent types . A type object can be created in several ways: By a type literal, a type name occurring as an expression, like Type type = int; , or a type variable occurring as an expression, like Type type = T; . By reading the run-time type of an object, like Type type = o. runtimeType; .