首页 > 解决方案 > 导出的库在其他模块中不可见

问题描述

有一个名为collectionList的库,它为 dart和IterableAPI添加了许多功能。

我想在它的基础上创建几个我自己的实用函数,比如mapNotNull

extension IterableExtension<E> on Iterable<E> {
  Iterable<T> mapNotNull<T extends Object>(T Function(E event) f) =>
      map((e) => f(e)).whereNotNull();
}

为了通过一次导入使所有扩展可见,我创建了一个新库,导出了我的扩展并在顶部添加:

// in core_utils module, in iterable_extension.dart file
export 'package:collection/collection.dart';

但是在我在其他包中导入这个库后,库中的 APIcollection丢失了。我该如何解决?

import 'package:core_utils/core_utils.dart';

void main() {
  [].mapNotNull((event) => 1); // compiles
  [].none((e) => false); // compilation error
}

错误消息并没有真正的帮助:

The method 'none' isn't defined for the type 'List'. (Documentation)  
Try correcting the name to the name of an existing method, or defining a method named 'none'.

标签: flutterdart

解决方案


这是因为扩展名发生冲突。

改名

extension IterableExtension<E> on Iterable<E> {

例如

extension IterableExt<E> on Iterable<E> {

推荐阅读