为Android编译时,是否会删除iOS的Dart代码?

前端之家收集整理的这篇文章主要介绍了为Android编译时,是否会删除iOS的Dart代码? 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用flutter为iOS和Android平台编写应用程序.有些功能不一样.

例如:

  1. if (Platform.isIOS) {
  2. int onlyForiOS = 10;
  3. onlyForiOS++;
  4. print("$onlyForiOS");
  5. }
  6. else if (Platform.isAndroid){
  7. int onlyForAndroid = 20;
  8. onlyForAndroid++;
  9. print("$onlyForAndroid");
  10. }

当我为Android平台构建时,iOS的代码会被编译成二进制文件吗?还是只是为了优化而将其删除
出于安全原因,我不希望iOS的任何代码出现在Android二进制文件中.

最佳答案
这取决于您要评估的表达式.

Dart摇树基于常量.因此,以下内容将摇摇欲坠:

  1. const foo = false;
  2. if (foo) {
  3. // will be removed on release builds
  4. }

但是此示例不会:

  1. final foo = false;
  2. if (foo) {
  3. // foo is not a const,therefore this if is not tree-shaked
  4. }

现在,如果我们查看Platform.isAndroid的实现,我们可以看到它不是一个常量,而是一个吸气剂.

因此,我们可以推断出(Platform.isAndroid)是否会摇摇欲坠.

猜你在找的Android相关文章