fluttercandies / flutter_image_compress

flutter image compress
MIT License
632 stars 215 forks source link

[How to use] Web deployment: Uncaught UnimplementedError #304

Open Hengry opened 3 months ago

Hengry commented 3 months ago

Platforms

Web

Description

I've read the Web section on README, and I've already added <script src="https://unpkg.com/pica/dist/pica.min.js" ></script> in web/index.html. It runs well in my local including IOS and also web. But when I built and deployed, it always shows Uncaught UnimplementedError in console. Did I missed anything?

My code

import 'package:flutter_image_compress/flutter_image_compress.dart';
// ...
final result = await FlutterImageCompress.compressWithList(
  imageBytes,
  minHeight: 768,
);
<!DOCTYPE html>
<html>
  <head>
    <!--
    If you are serving your web app in a path other than the root, change the
    href value below to reflect the base path you are serving from.

    The path provided below has to start and end with a slash "/" in order for
    it to work correctly.

    For more details:
    * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base

    This is a placeholder for base href that will be replaced by the value of
    the `--base-href` argument provided to `flutter build`.
  -->
    <base href="$FLUTTER_BASE_HREF" />

    <meta charset="UTF-8" />
    <meta content="IE=Edge" http-equiv="X-UA-Compatible" />
    <meta name="description" content="A new Flutter project." />

    <!-- iOS meta tags & icons -->
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
    <meta name="apple-mobile-web-app-title" content="ai_panorama_flutter" />
    <link rel="apple-touch-icon" href="icons/Icon-192.png" />

    <!-- Favicon -->
    <link rel="icon" type="image/png" href="favicon.png" />

    <title>ai_panorama_flutter</title>
    <link rel="manifest" href="manifest.json" />

    <script>
      // The value below is injected by flutter build, do not touch.
      const serviceWorkerVersion = null;
    </script>
    <!-- This script adds the flutter initialization JS code -->
    <script src="flutter.js" defer></script>
  </head>
  <body>
    <script src="https://unpkg.com/pica/dist/pica.min.js"></script>
    <script>
      window.addEventListener('load', function (ev) {
        // Download main.dart.js
        _flutter.loader.loadEntrypoint({
          serviceWorker: {
            serviceWorkerVersion: serviceWorkerVersion,
          },
          onEntrypointLoaded: function (engineInitializer) {
            engineInitializer.initializeEngine().then(function (appRunner) {
              appRunner.runApp();
            });
          },
        });
      });
    </script>
  </body>
</html>

Try do it

I've tried add <script src="https://unpkg.com/pica/dist/pica.min.js" ></script> on either head or body, also <script src="https://cdn.jsdelivr.net/npm/pica@9.0.1/dist/pica.min.js" ></script> on either head or body.

But none of them works.

jrmerril commented 3 months ago

Also having this issue...

iOSonntag commented 1 month ago

Same here, local it works, once deployed it fails.

iOSonntag commented 1 month ago

I just found out that my issue was related to brave browser shield, after turning shields down it worked without uncaught exceptions