Yeah, I think that this is not specific to extension methods and rather a missing feature of Dart with regard to instance methods.
For comparison here is the documentation for method references in Java which is the equivalent of Dart tear-offs:
https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html. Java supports 4 types of method references:
| Reference to a static method | ContainingClass::staticMethodName |
| Reference to an instance method of a particular object | containingObject::instanceMethodName |
| Reference to an instance method of an arbitrary object of a particular type | ContainingType::methodName |
| Reference to a constructor | ClassName::new |
So Dart only supports the first 2 cases, a reference to a top-level or static function or a reference to an instance method of a particular object. It does not support references to an instance method of an arbitrary object.
For dart it would look like Foo.doubled would an expression of type `int Function(int)` that would be the equivalent of a lambda of the form `(int x) => x.doubled()`.
So basically Dart does not treat instance methods as first class citizens and they cannot be passed to higher level functions.
Really wish we had Flutter built on a real language like Kotlin.