我导入了google_maps_flutter
和augmented_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'
答案 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)
有两种方法可以解决此问题:
指定导入前缀,例如import '../../something.dart' as st;
然后使用如下所示的内容:st.ImportedClass some = st.ImportedClass();
它还支持import '../../something.dart' show thisthing hide thatthing;
绝对进口
import 'package:my_lib/shared/something.dart