Extension Methods
Extension Methods
About
- Extensions augment existing types.
- Add functionality without subclassing.
- Compile-time syntactic sugar.
- Scoped to library imports.
Main Topics
-
Basic Extension
- **Definition
:
extension` keyword. - Example:
extension NumberExt on int { bool get isEven => this % 2 == 0; }
- **Definition
-
Usage
- **Definition`: Available on type.
- Example:
print(42.isEven); // true
-
Generic Extensions
- **Definition`: Type parameters.
- Example:
extension ListExt<T> on List<T> { List<T> duplicate() => [...this, ...this]; }
-
Scope
- **Definition`: Import-bound visibility.
- Example:
import 'extensions.dart';
How to Use
- **Declare`: New methods/properties
- **Import`: Required for visibility
- **Conflict`: Name resolution rules
- **Limitations`: No instance variables
How It Works
- **Static`: Compile-time resolution
- **Type-bound`: Specific receiver types
- **No Overrides`: Can’t override existing
Example Session:
void main() {
print(5.isEven); // Extension method
print([1,2].duplicate()); // Generic extension
}
Conclusion
Extension methods elegantly solve the “utility class” problem by putting new functionality where it belongs - directly on the types that need it, while maintaining clean separation of concerns.