1. 在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'
    
  2. 通过使用 const bool.fromEnvironment("dart.vm.product") 判断当前的开发环境
  3. 关键字 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);
   }
} } ```
  1. flutter 开发时,使用 Dart DevTools 中的 debugger 可以直接 debug , 体验比 AS 的 debug 模式好很多
  2. flutter 开发时,如果不是很清楚自己所处的位置,可以参考 Flutter outline