Dart 2.7之后,支持对已有类型进行扩展如:
void test(){
bool isMobileNumber= "电话号码".isMobileNumber;
}
即对String类扩展了isMobileNumber方法。如何实现呢?
步骤一
在项目根目录中创建analysis_options.yaml文件,把以下内容贴进去
analyzer:
enable-experiment:
- extension-methods
据有关资料解释,截至目前为止,扩展方法还处于实验性的支持,以后更新可能不用这么麻烦。
步骤二
将你的pubspec.yaml文件的environment sdk指定大于2.7.0,当然前提是你的dart版本必须大于2.7.0才可以这么写。写完之后运行 flutter pub get,更新一下配置。
步骤三
在dart文件中编写扩展方法,dart文件最好是单独出来的,比如我创建string_extension.dart文件,编写如下:
/// 字符串扩展方法
extension StringExtension on String{
/// 是否是电话号码
bool get isMobileNumber {
if(this?.isNotEmpty != true) return false;
return RegExp(r'^((13[0-9])|(14[5,7,9])|(15[^4])|(18[0-9])|(17[0,1,3,5,6,7,8])|(19)[0-9])\d{8}$').hasMatch(this);
}
}
然后就可以愉快地使用扩展方法啦。