flutter - 如何在 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 变体。变体的选择取决于编译时,抽象类的必要实现在编译时定义。
解决方案
自定义属性是 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";
}
检查此博客条目以获取更多详细信息。
推荐阅读
- html - HTML5 电子邮件输入中的国际字符,例如 Ä、ä、Ö、ö、Ü、ü、ß
- angular - 角 | 将服务注入装饰器
- batch-file - Bat 文件创建目录,其目录名称取自 .txt 文件
- docker-compose - Docker Swarm 中的 NFS 卷:权限被拒绝
- reactjs - 加载应用程序后如何触发 API 调用
- linux - 提取两个行号之间的文本
- eloquent - 如何创建包含多个查询的搜索结果页面
- c# - c#插入超过32767行IBM400
- svg - 如何在 SVG 中制作响应式 iframe
- c++ - nvcc 错误:string_view.h:constexpr 函数返回是非常量