使用`flutter build web`时超级构造函数出现问题

问题描述 投票:0回答:1

我想使用带有附加属性“虚线”的 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)。

flutter dart build
1个回答
0
投票

您无法扩展 Paint 组件。

在低级flutter中有多种类型的构造函数,self和扩展构造函数,Paint对象只有一个self构造函数,当您尝试扩展此类时,核心尝试调用扩展构造函数,但它没有定义。

例如,使用

ThemeData
会遇到同样的问题,因此存在
ThemeExtension
类,以扩展无法扩展的内容。

是的,dart 没有好的设计。

© www.soinside.com 2019 - 2024. All rights reserved.