我想使用带有附加属性“虚线”的 Paint 子类。 作为一个最小的示例,我只是将以下行添加到标准 flutter-create 代码中:
class MyPaint extends Paint {
bool dashed;
MyPaint()
: dashed = false,
super();
}
如果我使用
flutter build linux
一切正常,但使用 flutter build web
我收到以下错误:
Target dart2js failed: ProcessException: Process exited abnormally:
lib/main.dart:7:7:
Error: The non-abstract class 'MyPaint' is missing implementations for these members:
- Paint.blendMode
- Paint.blendMode=
- Paint.color
- Paint.color=
- ...
class MyPaint extends Paint {
^^^^^^^
...
lib/main.dart:11:9:
Error: Superclass has no constructor named 'Paint'.
super();
^^^^^
Error: Compilation failed.
Command: /home/XXX/snap/flutter/common/flutter/bin/cache/dart-sdk/bin/dart --disable-dart-dev
/home/XXX/snap/flutter/common/flutter/bin/cache/dart-sdk/bin/snapshots/dart2js.dart.snapshot
--platform-binaries=/home/XXX/snap/flutter/common/flutter/bin/cache/flutter_web_sdk/kernel --invoker=flutter_tool
-Ddart.vm.product=true -DFLUTTER_WEB_AUTO_DETECT=true
-DFLUTTER_WEB_CANVASKIT_URL=https://www.gstatic.com/flutter-canvaskit/3f3e560236539b7e2702f5ac790b2a4691b32d49/
--native-null-assertions --no-source-maps -o
/data/XXX/flutter/test/.dart_tool/flutter_build/232123a258e4d852bd909407e7ea3a68/app.dill
--packages=.dart_tool/package_config.json --cfe-only
/data/XXX/flutter/test/.dart_tool/flutter_build/232123a258e4d852bd909407e7ea3a68/main.dart
类继承是否有一些错误的用法? 或者 dart2js 中的一些奇怪问题不会出现在其他构建目标中?
我正在使用 Flutter(Channel stable,3.16.5,在 Ubuntu 22.04.2 LTS 6.5.0-25-generic,区域设置 de_DE.UTF-8)。
您无法扩展 Paint 组件。
在低级flutter中有多种类型的构造函数,self和扩展构造函数,Paint对象只有一个self构造函数,当您尝试扩展此类时,核心尝试调用扩展构造函数,但它没有定义。
例如,使用
ThemeData
会遇到同样的问题,因此存在 ThemeExtension
类,以扩展无法扩展的内容。
是的,dart 没有好的设计。