笔记
- 在dart语言中,字符串前面可以加上
r。根据regexp.dart文件中的源码* RegExp exp = new RegExp(r"(\w+)"); * String str = "Parse my string"; * Iterable<Match> matches = exp.allMatches(str); * * Note the use of a _raw string_ (a string prefixed with `r`)我们可以得知加入
r可以让字符串作为原始字符串,参考js 原始字符串 例子'abc'.replaceFirst(new RegExp('\w+'), '1') // 'abc' 'abc'.replaceFirst(new RegExp(r'\w+'), '1') // '1' - 通过使用
const bool.fromEnvironment("dart.vm.product")判断当前的开发环境 - 关键字
factory可以声明工厂构造函数, 赋予了构造函数函数体,让其可以选择返回的内容。利用这点,我们可以实现单例模式、缓存实例``` void main() { var a = Logger(‘ggg’); var b = Logger(‘ggg’); var c = Logger(‘ccc’); a.mute = true; print(a.mute); print(b.mute); print(c.mute); }
class Logger { final String name; bool mute = false;
// _cache 是一个私有库,幸好名字前有个 _ 。 static final Map<String, Logger> _cache = <String, Logger>{};
factory Logger(String name) { if (_cache.containsKey(name)) { return _cache[name]; } else { final logger = new Logger._internal(name); _cache[name] = logger; return logger; } }
Logger._internal(this.name);
void log(String msg) {
if (!mute) {
print(msg);
}
} } ```
- flutter 开发时,使用
Dart DevTools中的debugger可以直接 debug , 体验比AS的 debug 模式好很多 - flutter 开发时,如果不是很清楚自己所处的位置,可以参考
Flutter outline