'Save ImagePicker Image in Shared Preferences - Flutter

I'm trying to save image picked from ImagePicker and store it in shared preferences and then retrieve it from there but no luck so far

To make my question more specific, how to save an image as a string in shared preference and then later retrieve it

Here is my code

  File? profileImage;

  void saveData(String key, String value) async {
    final prefs = await SharedPreferences.getInstance();
    await prefs.setString(key, value);
  }

  void getData(String key) async {
    final prefs = await SharedPreferences.getInstance();
    final image = await prefs.getString(key);

    setState(() {
       profileImage = image; //this would result into error because profileImage expect file type value
     });
  }

  Future pickProfile() async {
     final profileImagePicker = await ImagePicker().pickImage(source: ImageSource.gallery);
     final File profile = File(profileImagePicker!.path);

     final directoryPath = await getApplicationDocumentsDirectory();
     final path = directoryPath.path;
     final imageFile = await File(profileImagePicker.path).copy('$path/image1.png'); // What am I supposed to do after this step
 
     saveData('profile', path); what value needs to be stored here, it expects a string 
   
     setState(() {
       profileImage = profile;
     });
  }


Solution 1:[1]

To convert image into String you can use below code

final bytes = imageFile.readAsBytesSync();
String imageString = base64Encode(bytes);

To convert String to Image

Uint8List bytes = BASE64.decode(base64ImageString);

You can use the Image widget to diplay the Image

Image.memory(bytes);

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1