buildWidgetContent method

  1. @override
Widget buildWidgetContent(
  1. BuildContext context
)
override

Implementation

@override
Widget buildWidgetContent(BuildContext context) {
  final parsedUri = _parsedUri;
  if (parsedUri == null) {
    return const SizedBox.shrink();
  }
  final uriStr = parsedUri.toString();
  final isHttpOrData = kIsWeb ||
      parsedUri.scheme == 'http' ||
      parsedUri.scheme == 'https' ||
      parsedUri.scheme == 'data' ||
      parsedUri.scheme == 'blob';

  if (isHttpOrData) {
    return Image.network(
      uriStr,
      fit: BoxFit.fill,
      width: double.infinity,
      height: double.infinity,
      loadingBuilder: (context, child, loadingProgress) {
        if (loadingProgress == null) return child;
        return const Center(child: CircularProgressIndicator());
      },
      errorBuilder: (context, error, stackTrace) {
        return const Center(
            child: Icon(Icons.error, color: Colors.red, size: 50));
      },
    );
  } else {
    final localPath = (parsedUri.isScheme('file'))
        ? parsedUri.toFilePath()
        : Uri.decodeComponent(parsedUri.path);
    return Image.file(
      File(localPath),
      fit: BoxFit.fill,
      width: double.infinity,
      height: double.infinity,
      errorBuilder: (context, error, stackTrace) {
        return Image.asset(
          uriStr,
          fit: BoxFit.fill,
          width: double.infinity,
          height: double.infinity,
          errorBuilder: (context, error, stackTrace) {
            return const Center(
                child: Icon(Icons.error, color: Colors.red, size: 50));
          },
        );
      },
    );
  }
}