Flutter 开发记录

全局日志打印的截获

Future<void> main() async {
  runZoned(
    () async {
      //在这里写原本的 main 函数中的内容
      WidgetsFlutterBinding.ensureInitialized();

      runApp(const App());
    },
    zoneSpecification: ZoneSpecification(
        print: (Zone self, ZoneDelegate parent, Zone zone, String line) {
      var newLine = LogHelper.getLogString(line); //将 line 的内容按需求进行处理
      parent.print(zone, newLine);
    }),
  );
}

从 Flutterbundle 中读取文件二进制

可以使用如下语句读取

  var assets = await rootBundle.load(pathOfAssets);

但是这里的 pathOfAssets 不太好确定,特别是 Flutter 工程是作为一个 module 集成到 iOS/Android 工程中的时候。

可以尝试用如下代码获取 bundle 里的所有文件列表,再根据情况处理

  var assets = await rootBundle.loadString('AssetManifest.json');
  print('AssetManifest.json: $assets');
  Map assetsMap = json.decode(assets);