В моем приложении есть функция, которая помогает пользователю выбрать изображение из галереи или сделать снимок с помощью камеры.
_getImage(ImageSource source) async {
// ignore: deprecated_member_use
File selectedImage = await ImagePicker.pickImage(
source: source,
imageQuality: 50,
maxWidth: 400.0,
).whenComplete(() {
setState(() {});
});
if (_imageFile == null) return;
setState(() {
_imageFile = selectedImage;
});
}
Я использую эту зависимость image_picker, и я следовал примеру, который я нашел в нем, а также примерам возможных обновлений, выполненных другие онлайн. Из предложения по этому вопросу о переполнении стека, мне советуют добавить в него whenComplete, что я и сделал.
Когда я выбираю изображение из своей галереи, оно не обновляет виджет просмотра изображений на моем экране. Также не работает опция камеры. Что я мог упустить?
Вот мой виджет Image, который отображает изображение:
return Stack(
alignment: AlignmentDirectional.bottomCenter,
children: <Widget>[
Image.file(
_imageFile,
fit: BoxFit.cover,
height: 250,
),
Container(
width: 250.0,
height: 100.0,
color: Colors.black54,
child: Column(
children: <Widget>[
Text(
'Change Image',
style: TextStyle(
color: Colors.white,
fontSize: 22.0,
fontWeight: FontWeight.w400,
),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
//camera button
IconButton(
icon: Icon(FontAwesomeIcons.camera),
onPressed: () => _getImage(ImageSource.camera),
color: kThemeStyleButtonFillColour,
),
SizedBox(width: 20.0),
IconButton(
icon: Icon(FontAwesomeIcons.fileImport),
onPressed: () => _getImage(ImageSource.gallery),
color: kThemeStyleButtonFillColour,
),
],
),
],
),
),
SizedBox(height: 32.0),
],
);
final pickedFile = ImagePicker().getImage(source: ImageSource.camera);
, это возвращаетpickedFile
и может быть преобразовано в файл с помощьюimageFile = File(pickedFile.Path)
- person ASAD HAMEED   schedule 27.09.2020Image widget
и объявление_imageFile
переменной. - person ASAD HAMEED   schedule 27.09.2020