首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“示例”类型不是“示例”类型的子类型

“示例”类型不是“示例”类型的子类型
EN

Stack Overflow用户
提问于 2019-12-15 15:45:56
回答 1查看 71关注 0票数 0

我从这种语言开始,并尝试创建一个应用程序,该应用程序可以接收来自服务器的消息(通过websocket)并在ListView中显示它们。

我在一个专用文件中创建了一个类,用于将这些消息转换为实体。

但从跟踪来看,我在几个文件中使用的类类型似乎并不是.“同样的”。

跟踪

代码语言:javascript
复制
E/flutter ( 9655): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: type 'Example' is not a subtype of type 'Example' of 'example' where
E/flutter ( 9655):   Example is from package:exampleProject/components/Example.dart
E/flutter ( 9655):   Example is from package:exampleProject/components/example.dart
E/flutter ( 9655): 
E/flutter ( 9655): #0      Plugin._onMessageReceived.<anonymous closure> (package:exampleProject/plugin.dart:35:15)
E/flutter ( 9655): #1      Iterable.forEach (dart:core/iterable.dart:279:30)
E/flutter ( 9655): #2      Plugin._onMessageReceived (package:exampleProject/plugin.dart:31:16)
E/flutter ( 9655): #3      WebSocketsNotifications._onReceptionOfMessageFromServer.<anonymous closure> (package:exampleProject/websockets.dart:95:15)
E/flutter ( 9655): #4      Iterable.forEach (dart:core/iterable.dart:279:30)
E/flutter ( 9655): #5      WebSocketsNotifications._onReceptionOfMessageFromServer (package:exampleProject/websockets.dart:94:16)
E/flutter ( 9655): #6      _rootRunUnary (dart:async/zone.dart:1134:38)
E/flutter ( 9655): #7      _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter ( 9655): #8      _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
E/flutter ( 9655): #9      _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:338:11)
E/flutter ( 9655): #10     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:265:7)
E/flutter ( 9655): #11     _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:134:11)
E/flutter ( 9655): #12     _ForwardingStream._handleData (dart:async/stream_pipe.dart:100:10)
E/flutter ( 9655): #13     _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:166:13)
E/flutter ( 9655): #14     _rootRunUnary (dart:async/zone.dart:1134:38)
E/flutter ( 9655): #15     _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter ( 9655): #16     _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
E/flutter ( 9655): #17     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:338:11)
E/flutter ( 9655): #18     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:265:7)
E/flutter ( 9655): #19     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:766:19)
E/flutter ( 9655): #20     _StreamController._add (dart:async/stream_controller.dart:642:7)
E/flutter ( 9655): #21     _rootRunUnary (dart:async/zone.dart:1134:38)
E/flutter ( 9655): #22     _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter ( 9655): #23     _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
E/flutter ( 9655): #24     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:338:11)
E/flutter ( 9655): #25     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:265:7)
E/flutter ( 9655): #26     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:766:19)
E/flutter ( 9655): #27     _StreamController._add (dart:async/stream_controller.dart:642:7)
E/flutter ( 9655): #28     _StreamController.add (dart:async/stream_controller.dart:588:5)
E/flutter ( 9655): #29     new _WebSocketImpl._fromSocket.<anonymous closure> (dart:_http/websocket_impl.dart:1143:21)
E/flutter ( 9655): #30     _rootRunUnary (dart:async/zone.dart:1134:38)
E/flutter ( 9655): #31     _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter ( 9655): #32     _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
E/flutter ( 9655): #33     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:338:11)
E/flutter ( 9655): #34     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:265:7)
E/flutter ( 9655): #35     _SinkTransformerStreamSubscription._add (dart:async/stream_transformers.dart:70:11)
E/flutter ( 9655): #36     _EventSinkWrapper.add (dart:async/stream_transformers.dart:17:11)
E/flutter ( 9655): #37     _WebSocketProtocolTransformer._messageFrameEnd (dart:_http/websocket_impl.dart:336:22)
E/flutter ( 9655): #38     _WebSocketProtocolTransformer.add (dart:_http/websocket_impl.dart:231:46)
E/flutter ( 9655): #39     _SinkTransformerStreamSubscription._handleData (dart:async/stream_transformers.dart:122:24)
E/flutter ( 9655): #40     _rootRunUnary (dart:async/zone.dart:1134:38)
E/flutter ( 9655): #41     _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter ( 9655): #42     _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
E/flutter ( 9655): #43     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:338:11)
E/flutter ( 9655): #44     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:265:7)
E/flutter ( 9655): #45     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:766:19)
E/flutter ( 9655): #46     _StreamController._add (dart:async/stream_controller.dart:642:7)
E/flutter ( 9655): #47     _StreamController.add (dart:async/stream_controller.dart:588:5)
E/flutter ( 9655): #48     _Socket._onData (dart:io-patch/socket_patch.dart:1831:41)
E/flutter ( 9655): #49     _rootRunUnary (dart:async/zone.dart:1138:13)
E/flutter ( 9655): #50     _CustomZone.runUn

这里是我的实体类

代码语言:javascript
复制
// example.dart

class Example {
  String name;

  Example.fromJson(Map<String, dynamic> decodedJson) {
    name = decodedJson['name'];
  }
}

这里是一个插件,它与套接字管理器通信,接收来自它的消息,并将内容转换为一个实体:

代码语言:javascript
复制
// plugin.dart

import 'dart:convert';

import 'package:flutter/foundation.dart';
import 'package:exampleProject/websockets.dart';
import 'package:exampleProject/components/Example.dart';

Plugin plugin = new Plugin();

class Plugin {
  static final Plugin _plugin = new Plugin._internal();

  factory Plugin() => _plugin;

  Plugin._internal() {
    // Initialize sockets
    sockets.initCommunication();

    sockets.addListener(_onMessageReceived);
  }

  _onMessageReceived(message) {
    Map<String, dynamic> decodedJson = json.decode(message);

    _listeners.forEach((Function callback) {

      // --------------------------------------------------------------< Creating the class instance
      Example example = Example.fromJson(decodedJson);
      // --------------------------------------------------------------< Send it to listeners
      callback(example);
    });
  }

  ObserverList<Function> _listeners = new ObserverList<Function>();

  addListener(Function callback) {
    _listeners.add(callback);
  }

  removeListener(Function callback) {
    _listeners.remove(callback);
  }
}

main

代码语言:javascript
复制
// main.dart

import 'package:flutter/material.dart';

import 'package:exampleProject/websockets.dart';
import 'package:exampleProject/plugin.dart';
import 'package:exampleProject/components/Example.dart';

void main() => runApp(App());

class App extends StatefulWidget {
  @override
  _AppState createState() => _AppState();
}

class _AppState extends State<App> {
  // --------------------------------------------------------------< List
  List<Example> examples = [];

  @override
  void initState() {
    super.initState();

    plugin.addListener(_onMessageReceived);
  }

  @override
  void dispose() {
    plugin.removeListener(_onMessageReceived);
    super.dispose();
  }

  // --------------------------------------------------------------< List insert
  _onMessageReceived(Example example) {
    examples.insert(0, example);
    // Force render
    setState(() {});
  }

  [...]
}

我错过了什么?

预先谢谢的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-15 15:54:58

这一行:

代码语言:javascript
复制
import 'package:exampleProject/components/Example.dart';

应:

代码语言:javascript
复制
import 'package:exampleProject/components/example.dart';

因为这就是它的名字。类名是Example,但文件名不是。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59345450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档