gpt4 book ai didi

android - 在flutter中从image_picker包中打开相机会导致真实设备上的应用程序崩溃,但在模拟器(android)中运行良好

转载 作者:行者123 更新时间:2023-12-04 14:27:11 27 4
gpt4 key购买 nike

我正在使用 flutter image_picker: ^0.6.0+17 来获取应用程序中产品的图像
它在模拟器上绝对可以正常工作,但在真正的 android 设备上,当我单击“打开相机”按钮时,应用程序崩溃并重新启动。

我试图将模拟器与我的设备使用相同的 api 级别
我在 Redmi 6A android oreo 8.1 上测试它
没发现问题 flutter 医生
或 flutter 分析
从图库中选择图像对两者都适用。

import 'dart:io';

import 'package:firstapp/models/product.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';

class ImageInput extends StatefulWidget {
final Function setImage;
final Product product;

ImageInput(this.setImage, this.product);

@override
State<StatefulWidget> createState() {
return _ImageInputState();
}
}

class _ImageInputState extends State<ImageInput> {
File _imageFile;

Future _getImage(BuildContext context, ImageSource source) async {
print('getting image');
File image = await ImagePicker.pickImage(source: source, maxWidth: 600);
if(image == null){
return null;
}
setState(() {
print('file = image');
_imageFile = image;
});
print('setting image');
widget.setImage(image);
Navigator.pop(context);
}

void _openImagePicker(BuildContext context) {
showModalBottomSheet(
context: context,
builder: (BuildContext context) {
return Container(
padding: EdgeInsets.all(10),
height: 150,
child: Column(children: <Widget>[
Text(
'Pick an Image',
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
SizedBox(
height: 10,
),
FlatButton(
textColor: Theme.of(context).primaryColor,
child: Text('Use Camera'),
onPressed: () {
_getImage(context, ImageSource.camera);
},
),
FlatButton(
textColor: Theme.of(context).primaryColor,
child: Text('Use Gallery'),
onPressed: () {
_getImage(context, ImageSource.gallery);
},
)
]),
);
});
}

@override
Widget build(BuildContext context) {
final buttonColor = Theme.of(context).primaryColor;
Widget previewImage = Text('Please select an image.');
if (_imageFile != null) {
previewImage = Image.file(
_imageFile,
height: 300.0,
width: MediaQuery.of(context).size.width,
fit: BoxFit.cover,
alignment: Alignment.center,
);
} else if (widget.product != null) {
previewImage = Image.network(
widget.product.image,
height: 300.0,
width: MediaQuery.of(context).size.width,
fit: BoxFit.cover,
alignment: Alignment.center,
);
}

return Column(
children: <Widget>[
OutlineButton(
onPressed: () {
_openImagePicker(context);
},
borderSide: BorderSide(color: buttonColor, width: 1),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(
Icons.camera_alt,
color: buttonColor,
),
SizedBox(
width: 5.0,
),
Text(
'Add Image',
style: TextStyle(color: buttonColor),
)
],
),
),
SizedBox(
height: 10,
),
previewImage,
],
);
}
}


这些是我按下使用相机后的调试日志
然后应用程序重新启动
I/flutter (20143): getting image
D/Surface (20143): Surface::disconnect(this=0x9577d000,api=1)
D/GraphicBuffer(20143): unregister, handle(0xaa60e900) (w:720 h:1440 s:736 f:0x1 u:b00)
D/GraphicBuffer(20143): unregister, handle(0xaa610280) (w:720 h:1440 s:736 f:0x1 u:b00)
D/GraphicBuffer(20143): unregister, handle(0xaa610640) (w:720 h:1440 s:736 f:0x1 u:b00)
D/Surface (20143): Surface::disconnect(this=0x9577d000,api=-1)
D/Surface (20143): Surface::disconnect(this=0x9577c000,api=1)
D/GraphicBuffer(20143): unregister, handle(0x94f956c0) (w:720 h:1440 s:736 f:0x1 u:b00)
V/PhoneWindow(20143): DecorView setVisiblity: visibility = 4, Parent = ViewRoot{f21fea2 com.example.firstapp/com.example.firstapp.MainActivity,ident = 0}, this = DecorView@5af733[MainActivity]
Lost connection to device.
Exited (sigterm)

这些是我正在使用的简单代码,只需更改 sourceImageSource.camera来自图像选择器包
Future _getImage(BuildContext context, ImageSource source) async {
print('getting image');
File image = await ImagePicker.pickImage(source: source, maxWidth: 600);
if(image == null){
return null;
}
setState(() {
print('file = image');
_imageFile = image;
});
print('setting image');
widget.setImage(image);
Navigator.pop(context);
}

提前致谢

最佳答案

更新,使用新版本的 image_picker 这个问题已经解决。
请关注https://pub.dev/packages/image_picker的官方文档以供更多引用。

关于android - 在flutter中从image_picker包中打开相机会导致真实设备上的应用程序崩溃,但在模拟器(android)中运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57240308/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com