Open Megatronicus opened 12 months ago
Downgraded to 2.2.3, still shows the same error, might be something else that changed not the library, solved it with using different code anyway.
So basically
This doesn't give error in android compile but gives error in web compile for flutter
videoElement.setAttribute('currentTime', (thumbnailTimeMs / 1000).toString());
final html.CanvasElement canvas = html.CanvasElement(
width: videoElement.width,
height: videoElement.height,
);
This doesn't give error in web compile but gives error in android compile for flutter
videoElement.currentTime = thumbnailTimeMs / 1000.0;
final html.CanvasElement canvas = html.CanvasElement(
width: videoElement.videoWidth,
height: videoElement.videoHeight,
);
I would have to comment out these parts when compiling for either, or possible solution move the whole method to a separate dart file make a new class and call the method like that after checking kIsWeb? Would that be an option for now? As it is now I can't have this code in the same dart file for web and android as it won't compile correctly. Any help is appreciated, thanks.
I have tried putting the method in a separate class and making a kIsWeb check before calling that class so that maybe when I'm compiling for android/ios it doesn't check that class but it still checks it and I'm still getting the errors when trying to deploy with this specific code to android in flutter (Android Studio)
Code
videoElement.currentTime = thumbnailTimeMs / 1000.0;
final html.CanvasElement canvas = html.CanvasElement(
width: videoElement.videoWidth,
height: videoElement.videoHeight,
);
Errors
page.dart:6598:22: Error: The setter 'currentTime' isn't defined for the class 'VideoElement'.
- 'VideoElement' is from 'package:universal_html/src/html.dart' ('/C:/Users/User/AppData/Local/Pub/Cache/hosted/pub.dev/universal_html-2.2.4/lib/src/html.dart').
Try correcting the name to the name of an existing setter, or defining a setter or field named 'currentTime'.
videoElement.currentTime = thumbnailTimeMs / 1000.0;
^^^^^^^^^^^
page.dart:6605:31: Error: The getter 'videoWidth' isn't defined for the class 'VideoElement'.
- 'VideoElement' is from 'package:universal_html/src/html.dart' ('/C:/Users/User/AppData/Local/Pub/Cache/hosted/pub.dev/universal_html-2.2.4/lib/src/html.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'videoWidth'.
width: videoElement.videoWidth,
^^^^^^^^^^
page.dart:6606:32: Error: The getter 'videoHeight' isn't defined for the class 'VideoElement'.
- 'VideoElement' is from 'package:universal_html/src/html.dart' ('/C:/Users/User/AppData/Local/Pub/Cache/hosted/pub.dev/universal_html-2.2.4/lib/src/html.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'videoHeight'.
height: videoElement.videoHeight,
^^^^^^^^^^^
Can you please correct this, or should I download the universal_html, import all the classes instead of using pubspec and then change things on my own?
Any help would be appreciated
Hello? Any help would be appreciated.
Hello? Any help would be appreciated with this.
It's almost going to be 2 months since I asked a question here, can someone please respond?
Please can you help me?
Guys, please can someone here help me with this?
Can someone please help me with this?
Please guys, anyone?
Please can someone please help me with this?
Hello, guys, can someone please help me with this?!
Any help would really be appreciated, can you please answer and help me with this?
Hello, guys, any help would be appreciated
Hi guys, once again, please help
Guys I have been waiting since Sept 18, two months and 4 days for a response. Can you guys please help me?
Please can you please answer guys?
Guys, seriously, it's been like 2 and a half months by now, can you please answer?!??!?!?!!
Please can you please respond?
Can you please respond?
Can I please get an answer. I've copied all the classes and pubspec into my app, need to modify it, maybe it will work like that. Removed universal_html from pubspec of the app. Next step reference all the classes internally, maybe this will cause more problems than I already have
Please, can you answer
Since it's not a library I can't access "import 'dart:indexed_db';" I've tried it all kinds of ways, also copying over 100 classes to my app just to change 2 lines of code so I can use universal_html is just overkill. Can you guys please answer, it should be a half a minute of work for you to change the code so it works correctly. Please answer.
Can you guys please answer?
Please, can you answer?
Please guys come on can you please answer and solve this?
I really need help with this, come on guys
Is there a way to solve this quickly, please?
There's gotta be a way from your side to just update that piece of the code. There's over a 100 classes in universal_html, it doesn't make a lot of sense copying all of that, I already tried it anyway but can't import indexed_db because the project is not a library and there were other errors connected probably to that.
Please can you please answer?
So, it's now been 3 and a half months since I asked this question. Please, can you please answer?!
Yep add me to the count too.
@Megatronicus 32 comments is actually psycopath behavior. Spamming the author's other repos is a good way to get yourself banned from commenting as well. Most people that contribute to these libraries do so on their own free time, and are in no way obligated to answer your question. If you needed help that bad, you could have even asked ChatGPT instead of begging 32 times.
Here is the answer you are looking for: currentTime
is indeed not a member of the VideoElement
class of universal_html, as the error suggests. currentTime
is a member of the VideoElement
class of the actual html package, though. That's just a limitation of this library.
I am unsure of how you are actually implementing things, but my suggestion is using a shim, sort of like how you see here with dart_ui.dart
, dart_ui_real.dart
and dart_ui_fake.dart
: https://github.com/flutter/packages/tree/camera_web-v0.3.1%2B2/packages/camera/camera_web/lib/src/shims
In dart_ui_fake.dart
, you'll see they were able to use the dart:html
package directly in a cross-platform way as the package is only actually imported and used on web. This is what Flutter themselves used to do when they needed to reference web-only APIs in a cross-platform project.
@NotTsunami
Halleluiah!!!! =D Actually, I think it's psychopath not to answer for 4 months, but who am I to judge, I tried reaching you everywhere as a last resort after multiple attempts here. I understand you're not obligated to answer, but in the good spirit of flutter code development it would be commendable so thank you for finally answering even though you didn't have to. =) Also, chatGPT didn't provide a valid solution multiple, multiple and multiple times that I asked
This last answer you posted, I've seen that elsewhere but didn't really use it.
Do you possibly have another simpler example to teach the concept? I have this like I explained:
This doesn't give error in android compile but gives error in web compile for flutter
videoElement.setAttribute('currentTime', (thumbnailTimeMs / 1000).toString()); final html.CanvasElement canvas = html.CanvasElement( width: videoElement.width, height: videoElement.height, ); This doesn't give error in web compile but gives error in android compile for flutter
videoElement.currentTime = thumbnailTimeMs / 1000.0; final html.CanvasElement canvas = html.CanvasElement( width: videoElement.videoWidth, height: videoElement.videoHeight, );
How would you organize things so you wouldn't have to comment out one and uncomment the other every time you change from web to android and android to web? I see you've provided the example where multiple classes are just redirecting with imports but I've tried something similar to this and it didn't work.
Halleluiah!!!! =D Actually, I think it's psychopath not to answer for 4 months, but who am I to judge, I tried reaching you everywhere as a last resort after multiple attempts here
I'm also not the person you were looking for - just someone else that works with Flutter.
This last answer you posted, I've seen that elsewhere but didn't really use it.
The magic of that solution is in the dart_ui.dart
file, specifically this line:
export 'dart_ui_fake.dart' if (dart.library.html) 'dart_ui_real.dart';
Flutter doesn't support conditional imports out of the box (meaning you can't just wrap an import in any random condition) - but this sort of import is allowed. I use Flutter currently for a cross-platform (desktop and web) project and I've run into an issue of where I need different code on each platform but importing dart:html
gives you the warning to only use on web. I'll break this down with the way I've implemented this before. Imagine you had the following setup:
my_class.dart
import 'desktop.dart' if (dart.library.html) 'web.dart' as my_class;
class MyClass {
void startClient() {
my_class.start();
}
}
desktop.dart
void start() {
...some desktop specific code...
}
web.dart
void start() {
...some web specific code...
}
With this setup, you can call startClient() on an instance of MyClass anywhere in your code and your code will properly execute the correct start() function for the platform. I haven't tested with your example, but I think this should work for your example.
Halleluiah!!!! =D Actually, I think it's psychopath not to answer for 4 months, but who am I to judge, I tried reaching you everywhere as a last resort after multiple attempts here
I'm also not the person you were looking for - just someone else that works with Flutter.
This last answer you posted, I've seen that elsewhere but didn't really use it.
The magic of that solution is in the
dart_ui.dart
file, specifically this line:
export 'dart_ui_fake.dart' if (dart.library.html) 'dart_ui_real.dart';
Flutter doesn't support conditional imports out of the box (meaning you can't just wrap an import in any random condition) - but this sort of import is allowed. I use Flutter currently for a cross-platform (desktop and web) project and I've run into an issue of where I need different code on each platform but importing
dart:html
gives you the warning to only use on web. I'll break this down with the way I've implemented this before. Imagine you had the following setup:my_class.dart
import 'desktop.dart' if (dart.library.html) 'web.dart' as my_class; class MyClass { void startClient() { my_class.start(); } }
desktop.dart
void start() { ...some desktop specific code... }
web.dart
void start() { ...some web specific code... }
With this setup, you can call startClient() on an instance of MyClass anywhere in your code and your code will properly execute the correct start() function for the platform. I haven't tested with your example, but I think this should work for your example.
Thank you for answering, I will try this in a couple of days, will get back to you
I'm getting an error for videoElement.currentTime = thumbnailTimeMs / 1000;
this is the error
lib/Screens/data/screen2.dart:6921:20: Error: The setter 'currentTime' isn't defined for the class 'VideoElement'.
This happened after the update to version universal_html: ^2.2.4
Latest version where everything worked universal_html: ^2.2.3