brendan-duncan / image

Dart Image Library for opening, manipulating, and saving various different image file formats.
MIT License
1.16k stars 262 forks source link

Flutter Web: Image.network load failed. #345

Open Patrick386 opened 2 years ago

Patrick386 commented 2 years ago

Image.network load failed.

Image: https://lh3.googleusercontent.com/a-/AOh14Ghm2Dsw3Xl4ABQiQgQ9Y7CKEG5GmmATNkpwXXGIwsxN_0EUTXnQ8hLosWeg8V9D50_lt0Kc_kElLhA8USv9lUESs-7RZ8-jnO8DQVdkYI4xt71Qm5-RSdvkH7VaPlcNA2MbrwOkr-IepdG7Ccb-tz3vrWsm_sW5COeNlToOeHXC98aOoajaYh4UtpK8hV7XZ8ElvcugVY1ULTc-la59sfsWWZf4XLeFi1F0tW8bQc8mv0IXeTr9wSr0mdTrEOasFIHa8wbClw7HcbcqPMhH-o4bX816JKvH3r3ymT2t6hMIn2B3iql1VUOKGzG29IkcxjJXLyWKoIo5XJcm4v1RbkrWVNHyAtcXwcmOBs5T0PWlPY0a0SCXYPwrzgtgEcYeyVnjXdyli9PrrXxaRh4TK8U3JBAXNeXTiymzRb1Twj6VbQpP3QrKlqYiC4IICKiZcyebkrWKLQPSje58j_uQszAjXJ9pOf7T-HUcCKHV8cS8mZ6GiVkrDjyGWapI768eDueoaiynDldTrcLC2l4PZg8UVw5im14h_-6xXf_4rtp0J8US-3R1miuM2_PfVxqY7WcV9pwUqD7wu3IVB0U4eMALUunhrUB99xLEgxsI2h50JhBiKQ3j80Xldk78YU3WXZDWVY0VOFBZdTg4DiOM858lQgR6nLbDliwMyXXtj2TJxHcTMidziJgB8NUdipXv2DokvaWWH-6BArTYUcj55SZqCsE_iY3n_JuW0TSZxMk_2Xw2PlsDGKmPlvV3l_kHVLtdeQ=s96-c

import 'dart:typed_data';

import 'package:http/http.dart';
import 'package:image/image.dart' as LibImage;

class SlpCircleAvatar extends ConsumerWidget {
  const SlpCircleAvatar({this.color, Key? key}) : super(key: key);
  final Color? color;

  getImage(String path) async {
    final Uint8List rawImg = (await get(Uri(path: path))).bodyBytes;
    final LibImage.Image image = LibImage.decodeJpg(rawImg);

    return Image.memory(rawImg);
  }

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    String photo = ref.watch(userPhotoProvider);
    String name = ref.watch(userNameProvider)[0];

    return CircleAvatar(
     backgroundColor: color ?? Colors.black87,

      radius: 20,
      child: photo.isNotEmpty
          ? getImage(photo) 
          : Text(name,
              style: TextStyles.title2.copyWith(color: Colors.redAccent)),
    );
  }
}
brendan-duncan commented 2 years ago

I can take a look at http.get in a bit, but that would be where the problem is. The bytes either haven't completed downloading, have an error, or are not the pure binary of the downloaded content (perhaps it has a header or is base64 or something along those lines).