Вот проблема, с которой я столкнулся:
Мои пользователи могут установить изображение своего профиля либо из Facebook (в формате jpeg или gif), либо с локального устройства (которым может быть png, jpg или другое).
Я получаю изображение из Facebook, используя:
// Get the name, email and picture
final graphResponse = await http.get(
'https://graph.facebook.com/v4.0/me?fields=name,email,picture.width(300).height(300)&access_token=$token');
// Decode JSON
final profile = jsonDecode(graphResponse.body);
final String stringData = profile['picture']['data'];
final bytes = Uint8List.fromList(stringData.codeUnits);
И получаю изображение с локального устройства:
final imagePicker = ImagePicker();
// Call image picker
final pickedFile = await imagePicker.getImage(
source: ImageSource.gallery,
maxWidth: MAX_WIDTH_PROFILE_IMAGE,
);
final imageBytes = await pickedFile.readAsBytes();
Тогда все, что у меня здесь, находится в байтах (Uint8List ), как мне сохранить его в соответствии с его исходным расширением?
Затем, позже, как мне прочитать их снова, не проверяя его расширение?
Например, с:
// Setting the filename
// Could be jpg or png or bmp or gif.
// How to determine the extension?
final filename = 'myProfileImage';
// Getting App's local directory
final Directory localRootDirectory =
await getApplicationDocumentsDirectory();
final String filePath = p.join(localRootDirectory.path, path, filename);
final file = File(filePath);
Видите ли, при чтении файла нам нужно указать полное имя файла. А как тогда определить расширение?