I want to write an image provider for my own image class. Let's take the widget below as a sample for an image class. This widget can be used whenever a image instance is needed. Now I'm using a widget which needs an image provider as parameter. How can I build a cusom image provider? (I know about the existing dart packages but the question here is how to write my own image provider)
class _AppImageState extends State<AppImage> {
Uint8List imageData;
Future download({iterate = 0}) async {
if (iterate >= 5) {
Log.w("too many iterations for ${widget.url}");
return;
}
var response;
try {
var request = await HttpClient().getUrl(Uri.parse(widget.url));
response = await request.close();
} catch (e) {
Log.e(e);
return Timer(Duration(seconds: iterate + 1), () => download(iterate: iterate + 1));
}
try {
if (response != null && response.statusCode == 200) {
Uint8List bytes = await consolidateHttpClientResponseBytes(response);
setState(() {
imageData = bytes;
});
} else {
return Timer(Duration(seconds: iterate + 1), () => download(iterate: iterate + 1));
}
} catch (e) {
Log.e(e);
}
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
download();
}
@override
Widget build(BuildContext context) {
return imageData != null ? Image.memory(imageData) : widget.placeholder ?? Container();
}
}