两个软件包的类名相同

时间:2019-12-18 09:29:25

标签: flutter

我导入了google_maps_flutteraugmented_reality_plugin_wikitude

两者都使用与CameraPosition相同的名称类。

我不为CameraPostion使用google_maps_futter类。

如何避免名称冲突?

lib/main.dart:6:1: Error: 'CameraPosition' is imported from both 'package:google_maps_flutter/google_maps_flutter.dart' and 'package:augmented_reality_plugin_wikitude/startupConfiguration.dart'.
import 'package:augmented_reality_plugin_wikitude/startupConfiguration.dart'

4 个答案:

答案 0 :(得分:4)

您可以使用 as 关键字来引用所有各自的变量和方法。

例如:

import 'package:google_maps_flutter/google_maps_flutter.dart' as cp1;
import 'package:augmented_reality_plugin_wikitude/startupConfiguration.dart' as cp2;

现在,要使用CameraPosition或google_maps_flutter中的其他方法,您可以使用“ cp1” 引用,例如cp1.method1()。

类似地,要使用CameraPosition或其他来自Enhanceded_reality_plugin的方法,您可以使用“ cp2” 引用,例如cp2.method1()。

  

as关键字的主要目的是强制转换并指定库前缀。因此,这是针对您的用例的最佳解决方案。

答案 1 :(得分:2)

在导入时从CameraPosition隐藏google_maps_flutter

import 'package:google_maps_flutter/google_maps_flutter.dart' hide CameraPosition;

答案 2 :(得分:1)

您可以通过使用另一个名称导入其中一个来避免此类冲突。因此,在导入两个之一时,假设您可以将google_maps导入为

import 'package:google_maps_flutter/google_maps_flutter.dart' as gmaps;

因此,将使用gmaps.CameraPosition访问来自Google Maps插件的CameraPosition,因此不再存在任何冲突。

答案 3 :(得分:1)

有两种方法可以解决此问题:

  1. 指定导入前缀,例如import '../../something.dart' as st;

    然后使用如下所示的内容:st.ImportedClass some = st.ImportedClass(); 它还支持import '../../something.dart' show thisthing hide thatthing;

  2. 绝对进口 import 'package:my_lib/shared/something.dart