Хорошо, так что я наконец-то все заработал и предоставлю здесь полные разделы кода для всех, кто хочет это сделать:
Извлечение изображения из галереи с помощью ImagePicker и сохранение URI в SharedPreferencesдля сохранения:
ImageProvider backgroundImage;
String customImageFile;
File _image;
Future getImage() async {
var image = await ImagePicker.pickImage(source: ImageSource.gallery);
setState(() {
_image = image;
});
customImageFile = _image.toString();
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('customImageFile', customImageFile);
}
Как отобразить изображение в методе сборки, где backgroundImage - это заполнитель, который вы хотите отобразить до того, как пользователь выберет пользовательский файл:
Container(
decoration: BoxDecoration(
color: Colors.blueAccent,
image: DecorationImage(
image: _image == null ? backgroundImage : FileImage(_image),
fit: BoxFit.fill,
),
),
),
Теперь customImageFileне будет подходящим значением String для того, чтобы снова найти это изображение из галереи, поэтому нам нужно отредактировать String, чтобы оно выглядело как то, что мы можем использовать.Исходная строка customImageFile:
File: '/storage/emulated/0/Download/images.jpeg'
Исправление:
customImageFile = customImageFile.substring(6);
customImageFile = customImageFile.replaceAll("'", "");
Теперь наша строка выглядит так:
/storage/emulated/0/Download/images.jpeg
Что мы можем сделать сейчасИспользуйте предыдущие предложения, например, так:
setState(() {
_image = File(customImageFile);
});
Протестировано и работает нормально.Так что теперь мы можем использовать строку, которую мы храним в SharedPreferences, чтобы загрузить ранее выбранное изображение при запуске приложения.Я помещаю метод loadPreferences () в initState (), который обрабатывает все подобные вещи, работает с удовольствием.
Надеюсь, это кому-нибудь поможет, потому что я не смог ничего найти в Интернете по этому поводу.