【问题标题】:Can Dart conditional imports use names?Dart 条件导入可以使用名称吗?
【发布时间】:2021-10-29 14:47:04
【问题描述】:

考虑一个条件导入语句。以下来自 Dart 语言指南:

import 'src/hw_none.dart'
    if (dart.library.io) 'src/hw_io.dart'
    if (dart.library.html) 'src/hw_html.dart';

有没有为这些导入添加名称的语法?例如,我想说这样的话:

import 'src/hw_none.dart' as my_prefix
    if (dart.library.io) 'src/hw_io.dart' as my_prefix
    if (dart.library.html) 'src/hw_html.dart' as my_prefix;

很遗憾,上面的内容无法编译。我一直找不到可以编译的变体。

有没有办法命名有条件导入的包?

【问题讨论】:

    标签: flutter dart flutter-web flutter-android


    【解决方案1】:

    几个月前我做了类似的事情来实现移动和网络功能。似乎您不能单独命名每个导入。

    import 'package:flutter_fcm_web_example/notification_helper.dart';
    import 'firebase_mobile_messaging.dart'
        if (dart.library.html) 'firebase_web_messaging.dart' as notifInstance;
    
    abstract class NotificationEncapsulation {
      static NotificationHelper get instance =>
          notifInstance.FirebaseMessagingHelper();
    }
    

    【讨论】:

    • "dart.library.js" 不是有效的条件导入。只有两个:dart.library.io 和 dart.library.html。
    • 用 html 库编辑了我的答案,谢谢你的评论。
    猜你喜欢
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2017-08-27
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多