#image #flutter #file-upload
#изображение #трепетание #загрузка файла
Вопрос:
Итак, я пытаюсь сделать несколько загрузочных изображений, используя эти:
_selectImage(ImagePicker().getImage(source: ImageSource.gallery), 1);
_selectImage(ImagePicker().getImage(source: ImageSource.gallery), 2);
_selectImage(ImagePicker().getImage(source: ImageSource.gallery), 3);
Когда метод этого:
void _selectImage(Future<PickedFile> image, int imageNumber) async{
FileImage tempImg = (await image) as FileImage;
switch(imageNumber){
case 1: setState(() => _image1 = tempImg);
break;
case 2: setState(() => _image3 = tempImg);
break;
case 2: setState(() => _image3 = tempImg);
break;
}
}
но здесь говорится, что ‘Изображение файла’ не может быть присвоено параметру типа ‘File’:
Widget _displayChild() {
if (_image1 == null){
return Padding(
padding: const EdgeInsets.fromLTRB(15.0, 20.0, 15.0, 20.0),
child: new Icon(Icons.add, color: grey,),
);
}else{
return Padding(
padding: const EdgeInsets.fromLTRB(15.0, 20.0, 15.0, 20.0),
child: Image.file(_image1)
);
}
}
Может ли кто-нибудь 1 помочь? Эта более новая версия меня смущает
Ответ №1:
Кажется, вы, возможно, неправильно понимаете файл, который должен быть назначен, поэтому я потратил несколько минут, чтобы реализовать это в быстром main.dart
файле и заставить его работать на вас.
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
void main() {
runApp(
MaterialApp(
home: MyWidget(),
),
);
}
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
File _image1;
File _image2;
File _image3;
void _selectImage(int imageNumber) async {
final PickedFile pickedFile = await ImagePicker().getImage(source: ImageSource.gallery);
switch (imageNumber) {
case 1:
setState(() => _image1 = File(pickedFile.path));
break;
case 2:
setState(() => _image3 = File(pickedFile.path));
break;
case 2:
setState(() => _image3 = File(pickedFile.path));
break;
}
}
Widget _displayChild() {
if (_image1 == null) {
return RaisedButton(
padding: const EdgeInsets.fromLTRB(15.0, 20.0, 15.0, 20.0),
child: new Icon(Icons.add, color: Colors.blue),
onPressed: () => _selectImage(1),
);
} else {
return Padding(
padding: const EdgeInsets.fromLTRB(15.0, 20.0, 15.0, 20.0),
child: Image.file(_image1),
);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Build some widgets!',
style: Theme.of(context).textTheme.headline4,
),
_displayChild(),
],
),
),
);
}
}
Комментарии:
1. можете ли вы помочь мне и с этим, или мне следует сделать новый пост? Я попытался проверить, но загрузка не прекращается twitlonger.com/show/n_1srhpre
2. Вы должны сделать новый пост для нового вопроса.
Ответ №2:
Загрузка изображения из файла создает копию файла в памяти, которая сохраняется в кэше изображений. Базовый файл не отслеживается на предмет изменений. Если он действительно изменится, приложение должно удалить запись из кэша изображений.