我使用image_picker从用户手机中拾取图像,但是一旦拾取图像,它将显示非常低的分辨率。
有什么办法可以解决?我想使用更高质量的图片,但我无法弄清楚!这是显示图像并使用图像选择器的代码:
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'dart:io';
import 'package:uni_markt/models/product.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;
void _getImage(BuildContext context, ImageSource source) {
ImagePicker.pickImage(source: source, maxWidth: 400).then((File image) {
setState(() {
_imageFile = image;
});
widget.setImage(image);
Navigator.pop(context);
});
}
void _openImagePicker(BuildContext context) {
showModalBottomSheet(
context: context,
builder: (BuildContext context) {
return Container(
height: 150,
padding: EdgeInsets.all(10),
child: Column(
children: <Widget>[
Text(
'Pick an Image source',
style: TextStyle(fontWeight: FontWeight.bold),
),
SizedBox(
height: 10,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
FlatButton(
textColor: Theme.of(context).primaryColor,
child: Icon(
Icons.art_track,
size: 90,
),
onPressed: () {
_getImage(context, ImageSource.gallery);
},
),
SizedBox(
width: 20,
),
FlatButton(
textColor: Theme.of(context).primaryColor,
child: Icon(
Icons.camera_alt,
size: 70,
),
onPressed: () {
_getImage(context, ImageSource.camera);
},
),
],
),
],
),
);
},
);
}
@override
Widget build(BuildContext context) {
final Color color = Theme.of(context).primaryColor;
Widget previewImage = Text('Please select an image');
if (_imageFile != null) {
previewImage = Image.file(_imageFile,
fit: BoxFit.cover,
height: 300,
alignment: Alignment.center,
width: MediaQuery.of(context).size.width);
} else if (widget.product != null) {
previewImage = Image.network(widget.product.image,
fit: BoxFit.cover,
height: 300,
alignment: Alignment.center,
width: MediaQuery.of(context).size.width);
}
return Column(
children: <Widget>[
OutlineButton(
borderSide: BorderSide(color: color, width: 3),
onPressed: () {
_openImagePicker(context);
},
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(
Icons.camera_alt,
color: color,
),
SizedBox(
width: 5,
),
Text(
'Add Image',
style: TextStyle(
color: color,
),
),
],
),
),
SizedBox(
height: 10,
),
previewImage,
],
);
我认为我忽略了某些东西,但是却忘了什么。有人可以帮忙解决这个问题吗?