import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:trackoffical_app/service/image.dart'; import 'image_loading.dart'; import '../model/m_net_image.dart'; class AppNetImage extends StatelessWidget{ final MNetImage netImage; final memory = Uint8List(0).obs; final progress = 0.0.obs; final BoxFit? fit; final VoidCallback? onWidgetOk; AppNetImage({ super.key, required this.netImage, this.fit, this.onWidgetOk }){ netImage.loadMemory( onReceiveProgress: (c, a){ if(a > 0){ progress.value = c.toDouble() / a; } } ).then((value) { if(value.isNotEmpty){ memory.value = value; } }); } @override Widget build(BuildContext context) { return Obx((){ if (memory.value.isEmpty){ return ImageLoading(value: progress.value); }else{ return _Image(memory.value, fit, onWidgetOk); // return Image.memory(memory.value, fit: fit); } }); } } class _Image extends StatelessWidget{ const _Image(this.memory, this.fit, this.onWidgetOk); final BoxFit? fit; final VoidCallback? onWidgetOk; final Uint8List memory; @override Widget build(BuildContext context) { final onWidgetOk = this.onWidgetOk; if(onWidgetOk!= null){ WidgetsBinding.instance.addPostFrameCallback((mag) { onWidgetOk(); }); } onWidgetOk?.call(); return Image.memory(memory, fit: fit); } }