首页 > 解决方案 > 如何在 Dart 中为条件导入设置自定义属性?

问题描述

Dart 允许使用标准库名称进行条件导入/导出,如下所示:

export 'src/hw_none.dart' // Stub implementation
    if (dart.library.io) 'src/hw_io.dart' // dart:io implementation
    if (dart.library.html) 'src/hw_html.dart'; // dart:html implementation

是否可以定义自定义属性/条件?例如,编译时传递它。

我有一个项目,我想分成两个变体:Flutter 变体和纯 Dart 变体。变体的选择取决于编译时,抽象类的必要实现在编译时定义。

标签: flutterdartpubspec

解决方案


自定义属性是 Dart 1 中的一个实验性功能。使用 Dart 2,编译时不再支持用户定义的自定义条件。

是引用您的问题的讨论。

您所能做的就是在运行时在实现之间切换:

abstract class SomeFactory {  
  String get message;
  
  factory SomeFactory() {
    if(Platform.environment['SOME_VAR'] != null)
      return new _SomeImplementation();
    return new _SomeOtherImplementation();
  }  
}

class _SomeImplementation implements SomeFactory {  
  @override
  String get message => 'SomeImplementation';  
}

class _SomeOtherImplementation implements SomeFactory {  
  @override
  String get message => "OtherImplementation";  
}

检查此博客条目以获取更多详细信息。


推荐阅读