在从图库中挑选图像时,我遇到了提供者的问题,因为它不会出现在UI中。
我试着用文本代替,它确实工作得很好。我想问题出在futureBuilder之类的
class ImageController extends ChangeNotifier {
Future<File> _image;
pickImageFromGallery(ImageSource source) {
_image = ImagePicker.pickImage(source: source);
NotificationListener();
}
Widget imageFromGallery() {
return FutureBuilder<File>(
future: _image,
builder: (BuildContext context, AsyncSnapshot<File> snapshot) {
if (snapshot.connectionState == ConnectionState.done &&
null != snapshot.data) {
Utility.saveImageToPreferences(
Utility.base64String(snapshot.data.readAsBytesSync()));
return
Image.file(
snapshot.data,
);
} else if (null != snapshot.error) {
return const Text(
'Error Picking Image',
textAlign: TextAlign.center,
);
} else {
return const Text(
'No Image Selected',
textAlign: TextAlign.center,
);
}
},
);
}
}这就是我在另一个小工具中显示它的方式
Consumer<ImageController>(
builder: (context, image,child){
return Provider.of<ImageController>(context).imageFromGallery();
},
),发布于 2020-07-01 18:10:15
使用者已经检索到了ImageController。Consumer是使用构建器编写Provider.of以返回小部件的一种更好的方式。
Consumer<ImageController>(
builder: (context, imageController, child){
return imageController.imageFromGallery();
},
),https://stackoverflow.com/questions/62674104
复制相似问题