Flutter中PermissionStatus导入歧义问题如何解决?
解决Flutter中PermissionStatus的导入歧义问题
遇到两个包同名类的冲突,有两种简单直接的解决方式:
方法一:使用导入前缀(as)
给其中一个包添加命名空间前缀,通过前缀明确区分调用的类:
// 给location包添加前缀 import 'package:location/location.dart' as location; import 'package:permission_handler/permission_handler.dart';
之后使用时,通过前缀指定对应的PermissionStatus:
// 调用permission_handler的PermissionStatus PermissionStatus permissionHandlerStatus = PermissionStatus.denied; // 调用location包的PermissionStatus location.PermissionStatus locationStatus = location.PermissionStatus.denied;
方法二:隐藏冲突类(hide)
如果你的代码只需要其中一个包的PermissionStatus,可以直接隐藏另一个包中冲突的类:
优先使用permission_handler的PermissionStatus
import 'package:location/location.dart' hide PermissionStatus; import 'package:permission_handler/permission_handler.dart';
此时直接声明的PermissionStatus默认指向permission_handler的类,同时不影响location包其他API的使用:
PermissionStatus locationPermissionStatus = PermissionStatus.denied; // 正常使用location包的其他功能 Location locationInstance = Location();
优先使用location的PermissionStatus
如果需要用location包的PermissionStatus,则反过来隐藏permission_handler中的该类:
import 'package:location/location.dart'; import 'package:permission_handler/permission_handler.dart' hide PermissionStatus;
根据你实际的业务需求选择对应的方案即可。
内容的提问来源于stack exchange,提问作者Jaimin Modi
相关产品推荐
相关产品推荐

