Error: The non-abstract class 'InternalSelectableMathState'
Error: The non-abstract class 'InternalSelectableMathState'
我刚刚将 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
。
我的 flutter doctor 输出:
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_math_fork
添加到 pubspec:
解决了这个问题
flutter_math_fork: ^0.5.0
升级到2.8稳定版的时候不知道为什么要安装flutter flutter_math_fork-0.3.3+1
我在仅使用 codemagic 构建时遇到了这个错误,但在我的本地 M1 上却没有mac。
我的一个依赖项(标志)与 flutter_math_fork 有冲突:^0.5.0.
我能够让它与 flutter_math_fork 一起工作:^0.4.2+2。 Codemagic 构建成功。
我已经用
解决了这个问题
flutter pub upgrade --major-versions
首先尝试将您的 flutter_math_fork
更新为 0.6.0,但在我的情况下
将 flutter 版本更新到 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
添加到您的 pubspec.yaml。它对我有用。
dependency_overrides:
flutter_math_fork: ^0.5.0
provider: ^6.0.2
我遇到了同样的错误,我将以下代码添加到 pubscpec.yaml,现在可以使用了。
如果还是不行可以按照上面的方法
dependency_overrides:
provider: 6.0.0
就我而言:
第 1 步:使用以下内容更新 pubspec.yaml 中的依赖项:
- 提供商:^6.0.0
- flutter_svg:^0.23.0+1
- flutter_math_fork:^0.5.0
第 2 步:运行flutter pub get
第 3 步:运行:颤振 运行
祝你好运!
更新Flutter版本后出现此类问题,解决方法是找出问题所在。答案会因您 pubspec.yaml
中的依赖项而异,因此这里的许多答案可能不适合您。
问题是您添加到 pubspec.yaml
的包也有自己的包列表,它们 依赖这些包,这些包可能也有一个列表他们 依赖的包的数量,等等。这些称为 t运行sient dependencies。结果是您的应用程序依赖于大依赖“树”中的一大堆包。当您更新用于应用程序的 Flutter 版本时,所有这些依赖项都必须支持新版本。这就是为什么您 运行 经常会在升级时遇到像这样的问题,通常是针对您不知道是应用程序一部分的软件包! (比如 flutter_math_fork
)。
要做的第一件事是打印你的依赖关系树。从命令行/终端,在您应用程序的根目录中,运行:
flutter pub deps
这将打印依赖关系树。搜索它,寻找 flutter_math_fork
。如果树很大,你可能想把它保存到一个更容易搜索的文件中,例如:
flutter pub deps > deps.txt
就我而言,我是在这里找到的:
-- flutter_html 2.1.5
| |-- chewie 1.2.2
| | |-- cupertino_icons 1.0.3
| | |-- flutter...
| | |-- provider 5.0.0
| | | |-- collection...
| | | |-- flutter...
| | | '-- nested 1.0.0
| | | '-- flutter...
| | |-- video_player...
| | '-- wakelock...
...
| |-- flutter_math_fork 0.3.3+1 <-----------
| | |-- collection...
| | |-- flutter...
| | |-- flutter_svg...
| | |-- meta...
| | |-- provider...
| | '-- tuple...
这告诉我,我的 pubspec.yaml 中的软件包 flutter_html
是对违规 flutter_math_fork 具有 t运行sient 依赖性的软件包,其版本 (0.3.3+1) 太旧,无法支持更新版本的 Flutter。
因此,解决方案是更新我的 flutter_html
版本。对你来说,它可能是一个不同的包,或者多个包。无论是哪个包,请转到 pub.dev 上的更改日志页面并查看更新版本的更改说明 - 希望您会看到其中一个较新版本的“更新依赖项”之类的内容。
就我而言,我使用的是 flutter_html 版本 2.1.5。去the change log for flutter_html,2.2.0版本下有说明:
Bumped minimum flutter_math_fork version for Flutter 2.5 compatibility
太棒了!所以我将 flutter_html 的版本更新为 2.2.0,运行 flutter pub get
和 viola - 问题已解决。
如果您在更新日志中没有看到更新依赖项的任何更高版本,请尝试使用最新版本。如果这不能解决问题,您需要向软件包作者报告此问题。在他们修复它之前,您要么必须恢复到早期版本的 Flutter,要么从您的应用程序中删除该软件包。
当然,您也可以只使用 flutter pub upgrade
同时更新所有包,但如果您的项目很大,请确保至少分配一整天的时间来修复可能的重大更改,依赖问题和错误。
我刚刚将 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
。
我的 flutter doctor 输出:
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_math_fork
添加到 pubspec:
flutter_math_fork: ^0.5.0
升级到2.8稳定版的时候不知道为什么要安装flutter flutter_math_fork-0.3.3+1
我在仅使用 codemagic 构建时遇到了这个错误,但在我的本地 M1 上却没有mac。
我的一个依赖项(标志)与 flutter_math_fork 有冲突:^0.5.0.
我能够让它与 flutter_math_fork 一起工作:^0.4.2+2。 Codemagic 构建成功。
我已经用
解决了这个问题flutter pub upgrade --major-versions
首先尝试将您的 flutter_math_fork
更新为 0.6.0,但在我的情况下
将 flutter 版本更新到 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
添加到您的 pubspec.yaml。它对我有用。
dependency_overrides:
flutter_math_fork: ^0.5.0
provider: ^6.0.2
我遇到了同样的错误,我将以下代码添加到 pubscpec.yaml,现在可以使用了。 如果还是不行可以按照上面的方法
dependency_overrides:
provider: 6.0.0
就我而言:
第 1 步:使用以下内容更新 pubspec.yaml 中的依赖项:
- 提供商:^6.0.0
- flutter_svg:^0.23.0+1
- flutter_math_fork:^0.5.0
第 2 步:运行flutter pub get
第 3 步:运行:颤振 运行
祝你好运!
更新Flutter版本后出现此类问题,解决方法是找出问题所在。答案会因您 pubspec.yaml
中的依赖项而异,因此这里的许多答案可能不适合您。
问题是您添加到 pubspec.yaml
的包也有自己的包列表,它们 依赖这些包,这些包可能也有一个列表他们 依赖的包的数量,等等。这些称为 t运行sient dependencies。结果是您的应用程序依赖于大依赖“树”中的一大堆包。当您更新用于应用程序的 Flutter 版本时,所有这些依赖项都必须支持新版本。这就是为什么您 运行 经常会在升级时遇到像这样的问题,通常是针对您不知道是应用程序一部分的软件包! (比如 flutter_math_fork
)。
要做的第一件事是打印你的依赖关系树。从命令行/终端,在您应用程序的根目录中,运行:
flutter pub deps
这将打印依赖关系树。搜索它,寻找 flutter_math_fork
。如果树很大,你可能想把它保存到一个更容易搜索的文件中,例如:
flutter pub deps > deps.txt
就我而言,我是在这里找到的:
-- flutter_html 2.1.5
| |-- chewie 1.2.2
| | |-- cupertino_icons 1.0.3
| | |-- flutter...
| | |-- provider 5.0.0
| | | |-- collection...
| | | |-- flutter...
| | | '-- nested 1.0.0
| | | '-- flutter...
| | |-- video_player...
| | '-- wakelock...
...
| |-- flutter_math_fork 0.3.3+1 <-----------
| | |-- collection...
| | |-- flutter...
| | |-- flutter_svg...
| | |-- meta...
| | |-- provider...
| | '-- tuple...
这告诉我,我的 pubspec.yaml 中的软件包 flutter_html
是对违规 flutter_math_fork 具有 t运行sient 依赖性的软件包,其版本 (0.3.3+1) 太旧,无法支持更新版本的 Flutter。
因此,解决方案是更新我的 flutter_html
版本。对你来说,它可能是一个不同的包,或者多个包。无论是哪个包,请转到 pub.dev 上的更改日志页面并查看更新版本的更改说明 - 希望您会看到其中一个较新版本的“更新依赖项”之类的内容。
就我而言,我使用的是 flutter_html 版本 2.1.5。去the change log for flutter_html,2.2.0版本下有说明:
Bumped minimum flutter_math_fork version for Flutter 2.5 compatibility
太棒了!所以我将 flutter_html 的版本更新为 2.2.0,运行 flutter pub get
和 viola - 问题已解决。
如果您在更新日志中没有看到更新依赖项的任何更高版本,请尝试使用最新版本。如果这不能解决问题,您需要向软件包作者报告此问题。在他们修复它之前,您要么必须恢复到早期版本的 Flutter,要么从您的应用程序中删除该软件包。
当然,您也可以只使用 flutter pub upgrade
同时更新所有包,但如果您的项目很大,请确保至少分配一整天的时间来修复可能的重大更改,依赖问题和错误。