如何解决Flutter - 在真实设备中安装后图像选择器不工作
我的图像选择器在模拟器 7 中以调试模式在我的真实设备中正常工作,但在我的真实设备中导出应用程序后无法正常工作..
我正在使用这个 plugin
在此视频中看到的问题是什么: Video in Google Drive:
在调试一切正常的地方:
video in google drive 如您所见,在调试模式下一切正常
这是我的图片选择功能
File userAvatar;
File get getUserAvatar => userAvatar;
Future pickUserAvatar(BuildContext context,ImageSource source) async {
final pickedUserAvatar = await picker.getImage(source: source);
BotToast.showText(text: 'my picked name is $source');
pickedUserAvatar == null
? BotToast.showText(text: 'Select Image')
: userAvatar = File(pickedUserAvatar.path);
userAvatar != null
? Provider.of<LandingService>(context,listen: false)
.showUserAvatar(context)
: BotToast.showText(text: 'Image Upload Error');
notifyListeners();
}
This is my show user Avatar Function 我在图片成功选择后显示的位置
showUserAvatar(BuildContext context) {
return showModalBottomSheet(
context: context,builder: (context) {
return Container(
height: MediaQuery.of(context).size.height * 0.45,width: MediaQuery.of(context).size.width,child: SingleChildScrollView(
child: Column(
children: [
Padding(
padding: EdgeInsets.symmetric(horizontal: 150.0),child: Divider(
thickness: 4.0,color: constantColors.whiteColor,),CircleAvatar(
radius: 80.0,backgroundColor: constantColors.transperant,backgroundImage: FileImage(
Provider.of<LandingUtils>(context,listen: false)
.userAvatar,Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,children: [
MaterialButton(
child: Text(
'Reselect',style: TextStyle(
color: constantColors.whiteColor,fontWeight: FontWeight.bold,decoration: TextDecoration.underline,decorationColor: constantColors.whiteColor,onPressed: () {
Provider.of<LandingUtils>(context,listen: false)
.pickUserAvatar(context,ImageSource.gallery);
},MaterialButton(
color: constantColors.blueColor,child: Text(
'Confirm Image',onPressed: () {
Provider.of<FirebasessOperations>(context,listen: false)
.uploadUserAvatar(context)
.whenComplete(() => {
signUpSheet(context),});
},)
],)
],decoration: BoxDecoration(
color: constantColors.blueGreyColor,borderRadius: BorderRadius.circular(15.0),);
});
}
我也在我的 android manifest 中添加了这一行
android:requestLegacyExternalStorage="true"
解决方法
问题是你构建的 Gradle 版本 去 android/build.grale
classpath 'com.android.tools.build:gradle:3.5.4'
希望它有效,
,在执行照片选择功能之前,您需要先检查并授予用户权限 请看看这个插件:https://pub.dev/packages/permission_handler 例子:
// request a user for permission first
Map<Permission,PermissionStatus> statuses = await [
Permission.storage,Permission.camera,].request();
if (await Permission.storage.request().isGranted) {
// Either the permission was already granted before or the user just granted it you
can now select photo.
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。