// Extensions allow you to add methods to existing// classes without modifying them.// Instead of defining a util class.classStringUtil{staticboolisValidEmail(Stringstr){finalemailRegExp=RegExp(r"^[a-zA-Z0-9.]+@[a-zA-Z0-9]+\.[a-zA-Z]+");returnemailRegExp.hasMatch(str);}}print(StringUtil.isValidEmail('someString'));//Print: false// We can define an extension which will be applied// on a certain type.extensionStringExtensionsonString{boolgetisValidEmail{finalemailRegExp=RegExp(r"^[a-zA-Z0-9.]+@[a-zA-Z0-9]+\.[a-zA-Z]+");returnemailRegExp.hasMatch(this);}}print('test@example.com'.isValidEmail);//Print: trueprint('SomeString'.isValidEmail);//Print: false
Generic Extensions
// allows you to apply the same logic to a range of types.extensionNumGenericExtensions<Textendsnum>onT{TaddTwo()=>this+2asT;}print(7.addTwo());// Print: 9