createNetworkImage method

Widget createNetworkImage(
  1. String url, {
  2. Map? extendParams,
  3. double? width,
  4. double? height,
  5. BorderRadius? borderRadius,
  6. bool isCache = true,
  7. String? imageCacheName = "v_nine_grid",
  8. LoadStateChanged? loadStateChanged,
  9. AnimationController? controller,
})

网络图片

考虑多种类型的公用参数方便 所以搞成map loadStateChanged传的话可以不传controller,否则必须传controller

Implementation

Widget createNetworkImage(String url,
    {Map? extendParams,
    double? width,
    double? height,
    // BoxFit fit = BoxFit.cover,
    BorderRadius? borderRadius,
    bool isCache = true,
    String? imageCacheName = "v_nine_grid",
    // InitGestureConfigHandler? initGestureConfigHandler,
    // DoubleTap? onDoubleTap,
    LoadStateChanged? loadStateChanged,
    AnimationController? controller}) {
  if (url.isEmpty) return const SizedBox();
  return ExtendedImage.network(
    url,
    fit: extendParams?["fit"] ?? BoxFit.cover,
    borderRadius: borderRadius,
    enableLoadState: true,
    cache: isCache,
    enableSlideOutPage: extendParams?["enableSlideOutPage"] ?? false,
    //是否开启滑动退出效果
    mode: extendParams?["mode"] ?? ExtendedImageMode.none,
    imageCacheName: imageCacheName,
    initGestureConfigHandler: extendParams?["initGestureConfigHandler"],
    //手势配置的回调(图片加载完成时).你可以根据图片的信息比如宽高,来初始化
    onDoubleTap: extendParams?["onDoubleTap"],
    //支持手势的时候,双击回调
    // border: Border.all(color: Colors.red, width: 1.0),
    shape: BoxShape.rectangle,

    loadStateChanged: loadStateChanged ??
        (ExtendedImageState state) {
          switch (state.extendedImageLoadState) {
            case LoadState.loading: //加载中。。。
              if (controller != null) {
                controller.reset();
              }
              return VImgLoading();

            ///if you don't want override completed widget
            ///please return null or state.completedWidget
            //return null;
            //return state.completedWidget;
            case LoadState.completed: //加载完成
              if (controller != null) {
                controller.forward();
              }
              return FadeTransition(
                  opacity: controller!,
                  // CurvedAnimation(parent: controller!, curve: Curves.easeIn),
                  child: state.completedWidget

                  //   ExtendedRawImage(
                  //   //如果你想重写完成图片的 size 或者 sourceRect, 你可以通过使用 ExtendedRawImage 来完成
                  //   image: state.extendedImageInfo?.image,
                  //   width: 20,
                  //   height: 30,
                  // ),
                  );
            case LoadState.failed: //加载失败
              if (controller != null) {
                controller.reset();
              }
              state.imageProvider.evict();
              return VImgLoadFailed(reloadClick: state.reLoadImage);
              ;
              break;
          }
        },
  );
}