错误:非抽象类“InternalSelectableMathState”
Posted
技术标签:
【中文标题】错误:非抽象类“InternalSelectableMathState”【英文标题】:Error: The non-abstract class 'InternalSelectableMathState' 【发布时间】:2022-01-16 22:33:18 【问题描述】:我刚刚将 Flutter 版本从 2.5.3 更新到 2.8。我有以下错误,我不知道如何解决它。安装的任何插件都没有错误,似乎错误来自内部类本身,我不知道错误是在我的应用程序的哪个部分抛出的:
../../AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_math_fork-0.3.3+1/lib/src/widgets/selectable.dart:407:7: Error: The non-abstract class 'InternalSelectableMathState' is missing implementations for these members:
- TextSelectionDelegate.copySelection
- TextSelectionDelegate.cutSelection
- TextSelectionDelegate.pasteText
- TextSelectionDelegate.selectAll
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class InternalSelectableMathState extends State<InternalSelectableMath>
^^^^^^^^^^^^^^^^^^^^^^^^^^^
/C:/desarrollo/flutter/packages/flutter/lib/src/services/text_input.dart:985:8: Context: 'TextSelectionDelegate.copySelection' is defined here.
void copySelection(SelectionChangedCause cause);
^^^^^^^^^^^^^
/C:/desarrollo/flutter/packages/flutter/lib/src/services/text_input.dart:965:8: Context: 'TextSelectionDelegate.cutSelection' is defined here.
void cutSelection(SelectionChangedCause cause);
^^^^^^^^^^^^
/C:/desarrollo/flutter/packages/flutter/lib/src/services/text_input.dart:973:16: Context: 'TextSelectionDelegate.pasteText' is defined here.
Future<void> pasteText(SelectionChangedCause cause);
^^^^^^^^^
/C:/desarrollo/flutter/packages/flutter/lib/src/services/text_input.dart:979:8: Context: 'TextSelectionDelegate.selectAll' is defined here.
void selectAll(SelectionChangedCause cause);
^^^^^^^^^
FAILURE: Build failed with an exception.
* Where:
Script 'C:\desarrollo\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 1070
* What went wrong:
Execution failed for task ':app:compileFlutterBuildDebug'.
> Process 'command 'C:\desarrollo\flutter\bin\flutter.bat'' finished with non-zero exit value 1
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 8m 5s
Exception: Gradle task assembleDebug failed with exit code 1
我没有在我的 pubspec 上声明 flutter_math_fork
。
我的颤振医生输出:
Doctor summary (to see all details, run flutter doctor -v): [√] Flutter (Channel stable, 2.8.0, on Microsoft Windows [Versión 10.0.19041.1348], locale es-ES) [√] android toolchain - develop for Android devices (Android SDK version 31.0.0) [√] Chrome - develop for the web [√] Android Studio (version 2020.3) [√] VS Code (version 1.62.3) [√] Connected device (3 available) • No issues found!
我已经尝试过:flutter clean、flutter upgrade 和无效缓存/重启。
欢迎提出任何建议。
【问题讨论】:
你试过flutter clean
吗?
是的,我尝试flutter clean,flutter升级和重启,缓存失效
手动删除构建文件夹并尝试再次运行
dependency_overrides:提供者:^6.0.0 flutter_math_fork:^0.5.0
【参考方案1】:
我已经通过强制更新 flutter_math_fork
添加到 pubspec 来解决它:
flutter_math_fork: ^0.5.0
当我升级到 2.8 稳定版时,我不知道为什么颤振安装 flutter_math_fork-0.3.3+1
。
【讨论】:
谢谢,我遇到了同样的问题。奇怪,因为我上周五在我的个人机器 (linux) 上进行了升级,一切都很好,现在在工作机器 Windows 上我今天遇到了这个错误 是的,很奇怪,可能在下一个稳定版本中,我们必须从 pubspec 中删除该插件,因为颤振刚刚修复了这个问题 非常感谢,它成功了❤【参考方案2】:我已经解决了这个问题
flutter pub upgrade --major-versions
【讨论】:
我认为,这段代码正在更新所有库,它可能会导致更大的问题。 我不这么认为,如果有任何冲突它可能会警告你。但是当然,如果库改变了如何使用它,你必须更新你的代码,我认为它比使用旧版本的库更好。【参考方案3】:添加到您的 pubspec.yaml。它对我有用。
dependency_overrides:
flutter_math_fork: ^0.5.0
provider: ^6.0.2
【讨论】:
这对我有用,不需要flutter_math
部分。事实证明,我使用的是provider
5.0,所以将其升级到 6.0 是可行的。【参考方案4】:
仅使用 codemagic 构建时出现此错误,但在我的本地 M1 mac 上没有。
我的一个依赖项(标志)与flutter_math_fork发生冲突:^0.5.0。
我能够使用 flutter_math_fork 让它工作:^0.4.2+2。 Codemagic 构建成功。
【讨论】:
【参考方案5】:首先尝试将您的 flutter_math_fork
更新为 0.6.0,但在我的情况下
在将颤振版本更新到 2.8.1 后,我遇到了同样的错误,我无法将 flutter_math_fork
更新到最新版本,因为我使用的是 Provider version 5.0.0
和 flutter_math_form
需要 provider version 6.0.0+
。所以在升级其他库之前你可以修改/lib/src/widgets/selectable.dart
这个文件。添加这一行。
@override
dynamic noSuchMethod(Invocation invocation)
// We override noSuchMethod since we do not have concrete implementations
// for all methods of the selection manager mixins.
throw NoSuchMethodError.withInvocation(this, invocation);
删除此方法
@override
void bringIntoView(TextPosition position)
@override
void userUpdateTextEditingValue(
TextEditingValue value, SelectionChangedCause cause)
或者直接复制粘贴this
【讨论】:
以上是关于错误:非抽象类“InternalSelectableMathState”的主要内容,如果未能解决你的问题,请参考以下文章
在类文件javaxvalidationConstraintViolationException中,在非本地或抽象的方法中缺席代码属性。