提问者:小点点

颤振中的_CompactLinkedHashSet是什么?


我正在尝试运行我的第一个颤振应用程序,当我在 iPhone 上运行它时出现红屏错误,但它在模拟器上运行没有问题:

类型“_CompactLinkedHashSet”不是类型“小部件”的子类型。

有谁知道这个错误指的是什么?导致错误的小部件是一个未来构建器。未来构建器的类型与未来相同。

颤动医生:

[✓] Flutter (Channel dev, v1.18.0, 在 Mac OS X 10.15.4 19E287, locale en-AU) • Flutter 版本 1.18.0 at /Users/Josh/Developer/Flutter • 框架修订版 8f7327f83a (11 天前), 2020-04-06 22:11:01 -0400 • 引擎版本 49891e0653 • Dart 版本 2.8.0(内部版本 2.8.0-dev.20.0 1210d27678)

[✓] Android 工具链 - 针对 Android 设备开发(Android SDK 版本 29.0.3) • Android SDK at /Users/Josh/Library/Android/sdk • Platform android-29, build-tools 29.0.3 • Java 二进制文件:/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Java 版本 OpenJDK 运行时环境(build 1.8.0_212-release-1586-b4-5784211) • 接受所有 Android 许可证。

[✓] Xcode - 针对 iOS 和 macOS 开发 (Xcode 11.4.1) • Xcode at /Applications/Xcode.app/Content/Developer • Xcode 11.4.1,内部版本 11E503a • CocoaPods 版本 1.9.1

[✓] Android Studio (版本 3.6) • Android Studio at /Applications/Android Studio.app/Contents • Flutter 插件版本 45.1.1 • Dart 插件版本 192.7761 • Java 版本 OpenJDK 运行时环境(build 1.8.0_212-release-1586-b4-5784211)

[!]连接的设备!没有可用的设备

!医生在 1 类中发现了问题。

class DisclaimerData {
  bool agreed;
  String version;
  DisclaimerData({this.agreed, this.version});
}


class DisclaimerView extends StatefulWidget {
  @override
  _DisclaimerViewState createState() => _DisclaimerViewState();
}

class _DisclaimerViewState extends State<DisclaimerView> {

Future<DisclaimerData> _getAgreed() async {
    final preferences = await SharedPreferences.getInstance();
    final disclaimerValues = DisclaimerData();

      disclaimerValues.agreed = preferences.getBool('disclaimer_agreed') ?? false;
      disclaimerValues.version =
    preferences.getString('disclaimer_version') ?? '0';

    return disclaimerValues;
  }

@override     
Widget build(BuildContext context) {
   return FutureBuilder<DisclaimerData>(
      future: _getAgreed(),
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          return Scaffold(
...

共1个答案

匿名用户

_CompactLinkedHashSet 是 Set 的替代名称。它是 dart 用来优化 Set 数据结构的内部默认 Set 实现。

随着集合大小的增长,_CompactLinkedHashSet(默认 Set 实现)和_InternalLinkedHashMap(默认 Map)具有良好的渐近存储效率。它们总是比 10 个元素以上的方便可用的替代品更好,并且旨在提供更好的地方。

来源: https://github.com/dart-lang/sdk/issues/26081